DirectShow在VS2005中PVOID64问题和配置问题 - xkyx_cn的专栏...
来源:百度文库 编辑:神马文学网 时间:2024/05/04 19:12:37
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.htmlPVOID64问题解决后,还要对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环境中编译通过。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xkyx_cn/archive/2009/03/16/3993994.aspx
上次开发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.htmlPVOID64问题解决后,还要对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环境中编译通过。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xkyx_cn/archive/2009/03/16/3993994.aspx
DirectShow在VS2005中PVOID64问题和配置问题 - xkyx_cn的专栏...
在VS2005中通过Ajax调用WebService遇到的问题
关于vs2005的“应用程序配置不正确,无法运行”问题的解决方法 - 视频探索 - che...
SVN和VS2005配置
关于在集群中编程的问题 - mrdangdong的专栏 - CSDNBlog
贪心算法在背包背包问题中应用的探讨1 - shaopengfei的专栏 - CSDNBlog
在Vista的IIS系统中运行ASP的几个配置问题
国产数据库在发展中遇到的问题和解决之道 - [DM数据库普及专栏] - 达梦数据库 国产数据库第一品牌|国产数据库 - Powered by Discuz!
Linux下共享库路径配置问题[ZZ|FY] - ldong2007的专栏 - CSDN博客
关于servlet和struts的配置问题自己想法
VS2005调试问题与解决方法集锦
VS2005 中ContextSwitchDeadlock 的解决
在Dreamweaver中常见的问题大全
解放军在救灾中暴露出的问题
强奸罪在实务中存在的问题
在程序中怎么样判断子窗体是否打开和怎么样关闭子窗体的问题?
在Dreamweaver中问题大全
在另类问题中胜出
配置Tomcat+SSL in Win32的问题
有关Spring 的 XML 配置问题
关于DWR2.0的配置问题
Debian中VI的配置方法 - shaovey的专栏 - CSDNBlog
mysql配置问题
孙淦:在学习中深化对重大理论和现实问题的认识和研究--中国共产党新闻--人民网 -中直党建...