作者:liguisen
Blog:http://blog.csdn.net/liguisen
先介绍系统环境:
XP Professional sp2
visual studio 2005 version 8.0.50727.42
DirectX 9.0(9.0b) SDK Update - (Summer 2003)
首先,就是编译baseclasses,什么是baseclasses?打开你的dx的sdk安装目录,例如:
D:\DX90SDK\Samples\C++\DirectShow\
这里就有一个叫baseclasses的工程,为安全起见,请先备份此工程。
1,双击baseclasses.sln打开,提示我们需要转换工程,按提示转换就是了,编译
提示错误:
1>D:\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>D:\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'
1>D:\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\DX90SDK\Samples\C++\DirectShow\BaseClasses\ctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2,在Tools->Options->Projects and solutions->vc++ directories->show directories for里选择include files
然后增加
D:\DX90SDK\Include
D:\DX90SDK\Samples\C++\DirectShow\BaseClasses
D:\DX90SDK\Samples\C++\Common
可能会问题依旧,调整一下include files的顺序吧,把他们都放在最后,例如我的环境:
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
$(VCInstallDir)PlatformSDK\include
$(FrameworkSDKDir)include
D:\DX90SDK\Include
D:\DX90SDK\Samples\C++\DirectShow\BaseClasses
D:\DX90SDK\Samples\C++\Common
然后在project->BaseClasses properties->configuration->C/C++ -> General->Additional Include Directories里面的内容(.,..\..\..\..\include)删掉,重新编译,PVOID64的错误消失,原因如下:
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,从而导致出错,只需要改变include files的优先级即可。当然,也可以改写winnt.h中的代码,在下面这两行:typedef void *PVOID;
typedef void *POINTER_64 PVOID64;
之前增加一行:
#define POINTER_64 __ptr64
3,到目前为止,还剩下:
BaseClasses\ctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
这个错误,解决方法如下:
打开project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430选项。
4,接着编译,提示error C2065: 'Count' : undeclared identifier等等错误,这个是微软的历史遗留问题了,C++标准语法的问题,因为在之前在for循环内定义的变量可以在for之外的地方使用,即在第一个for里for(int i,...),以后的for再使用i不必再声明,解决方法也很简单,打开project->BaseClasses properties->configuration->C/C++->Language->Force Comformance in For Loop Scrope设置为No即可。当然,也可以手动改代码,增加一个声明就是了。
经过上面几个步骤,应该是可以顺利编译了,对于其它版本的工程,照样设置就可以了,总共编译出下面4个文件备用:
BaseClasses\Debug\strmbasd.lib
BaseClasses\Debug_Unicode\strmbasd.lib
BaseClasses\Release\STRMBASE.lib
BaseClasses\Release_UnicodeSTRMBASE.lib
你或许需要在Tools->Options->Projects and solutions->vc++ directories->show directories for->library files里把它们加进去。
赶快编译DX90SDK\Samples\C++\DirectShow\Players\PlayDMO工程试试看吧。
以上资料整理自下面3个blog,一并列出:
DirectShow在VS2005中PVOID64问题和配置问题
http://www.cnblogs.com/RunOnTheWay/archive/2008/01/17/1043705.html
DirectShow 在VS2005中环境配置
http://blog.cnii.com.cn/?uid-75821-action-viewspace-itemid-24418
Some DirectShow Samples Break in Visual Studio 2005
http://blogs.msdn.com/mikewasson/archive/2005/05/23/some-directshow-samples-break-in-visual-studio-2005.aspx
相关推荐
DirectShow开发环境的配置
关于VS开发环境与DirectShow版本问题,DirectShow已经从DirectX中分离出来。帮助你安装合理的版本
详细说明进行directshow开发如何在vs2008下进行配置
VS2005下配置DirectShow,有插图,一步一步操作即可-VS2005 configure DirectShow
学习和使用DirectShow开发的朋友会发现,在SDK 9.0以后的版本,没有DirectShow的单独配置了,而网上的配置资料全都是以前的,所以学习和使用DirectShow的第一麻烦就出现了,有代码,有例子,却无法运行,本次提供的...
我也是directshow新手 刚开始的时候走了点弯路 directshow环境设置 有点麻烦 希望对大家有点帮助 如有不对 请大家指教
注意点(版本问题):在比较老的资料里可以知道:directshow是包含在directx SDK里面的。这里要强调一点,这是在DirectX 9.0b之前的情况,在9.0c以后,directshow和DirectX就彻底分家了,directshow被移到了windows ...
DirectShow在VS2005环境下的配置详细说明(附图).
首先编译SamplesC++DirectShowBaseClasses目录下的baseclasses.sln以得到两个库文件(strbase.lib和strmbase.lib)
本人也找了好多资料,但是这些资料写的不是很详细。本人根据教科书,总结了一个配置方法。保证一次配置成功!并提供技术支持。里面有本人的QQ。 确实是一份价钱,一份货。
VS2005下配置DirectShow,有插图,一步一步操作即可
一步一步做DirectShow开发环境配置及测试例程(VC6),是初学者的入门资料
directshow在VS2008下的配置
在win7下于VS2010中配置directshow。
解压密码是 mao.ji.need.help DirectShow开发 DirectShow开发 DirectShow开发
在vc6.0中配置directshow 并附上了Windows Server 2003 PSDK February 2003 Edition 下载地址
VS2005下DirectShow配置,一步一步操作即可,N多人用了,基本上都一次成功。
VS2008环境配置directshow终极攻略[收集].pdf
本人于2011年1月13日终于在不断的尝试中总结出了在vs2008下配置directshow开发环境的流程 具体的操作流程说的很喜 初接触过vs2008的初学者可以看懂
一步一步做DirectShow开发环境配置及测试例程(VC6)_源码