DIRECTSHOW在VS2005中PVOID64问题和配置问题

简介:

上次开发DirectShow还是2005年1月,整整两年,今天又重操旧业。
这次在VS2005上使用DirectShow,首次编译发现出现以下错误:
error C2146: syntax error : missing ';' before identifier 'PVOID64'

看了很多关于这个问题的讨论,解答,无非就是改写winnt.h中的代码:
原代码:

typedef    void     * PVOID;   
typedef   
void     * POINTER_64   PVOID64;

在这两行代码前增加:

#define    POINTER_64   __ptr64

但这明显是下下之策,而且真正原因没人说的清楚。

看到一位xd,给了一种解释,是比较正确的, 如下:
POINTER_64是一个宏,在64位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8\VC\PlatformSDK\Include\basetsd.h(23):#define POINTER_64 __ptr64),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_64,从而导致出错。
方法1:
在Tools -> Options -> Projects and Solutions -> VC++ Directories -> Include Files里确保系统包含目录(以S打头的)在最前面,同时在 project properties下面的“C/C++ -> General”中确保“Additional Include Directories”为空(因为它会被优先编译,这样就轮不到VC\PlatformSDK\Include\basetsd.h),所有的包含目录都应该在上面的include里面。这种方法不用改代码。
方法2:
在DXSDK自己的basetsd.h里自己定义#define POINTER_64 __ptr64
Trackback:http://hi.baidu.com/maxgoto/blog/item/fc40a86e8ec1f3da81cb4aff.html

PVOID64问题解决后,还要对VS2005进行配置:
先把dxsdk中提供的baseclass编译通过,用四种方式编译,会分别生成四个lib,一般只用到了其中的Debug和Release文件,
在tool|option|vc++ directories中包含的files中设置如下。
这里需要加入得include files有三种:
D:\SDK\DXSDK\Include
D:\SDK\DXSDK\Samples\C++\DirectShow\BaseClasses
D:\SDK\DXSDK\Samples\C++\Common\Include

在后边的library files中也需要增加三到四种的文件:
D:\SDK\DXSDK\Lib
D:\SDK\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug
D:\SDK\DXSDK\Samples\C++\DirectShow\BaseClasses\Release

把以上设置好,需注意调整include file的位置,一般让platformSDK\Include位于DXSDK\Include后面,
基本就可以将DirectShow程序在vs2005环境中编译通过。

本文转自博客园知识天地的博客,原文链接:DIRECTSHOW在VS2005中PVOID64问题和配置问题 ,如需转载请自行联系原博主。

相关文章
|
6月前
|
网络协议 Unix Linux
OpenOCD(五):调试适配器配置
OpenOCD(五):调试适配器配置
374 0
|
3月前
|
网络安全
如何用HCL模拟器配置防火墙IRF?
如何用HCL模拟器配置防火墙IRF?
107 2
|
开发工具 C# C++
Revit2019二次开发外部工具(附加模块)的安装
Revit2019二次开发外部工具(附加模块)的安装
Revit2019二次开发外部工具(附加模块)的安装
|
安全 Windows
Win系统 - Windows下的沙盒运行模式,竟然这么有用?!
Win系统 - Windows下的沙盒运行模式,竟然这么有用?!
387 0
Win系统 - Windows下的沙盒运行模式,竟然这么有用?!
HarmonyOS初探06——使用DevEco Studio模拟器端口被占用无法启动
在内网环境下首次使用DevEco Studio创建应用时,可能会报如下问题: server not running; starting it at tcp:5037
284 0
HarmonyOS初探06——使用DevEco Studio模拟器端口被占用无法启动
|
Android开发 Java API
将Eclipse插件转换为RCP应用程序(上)
有不少朋友问到如何把一个已有的Eclipse插件转换为RCP应用程序,其实这个过程并不复杂,因为RCP应用也是基于插件的结构,可以说RCP 就是精简后的Eclipse平台,只是我们要对这个平台做一些定制工作。
1856 0
|
Shell Android开发 开发者
下一篇
无影云桌面