VS 2005做Filter时碰到的一系列问题
2011-03-05 13:18:03
由于系统环境是Win7,所以所有的DirectShow基类代码已经移到Windows SDKs中了,如我的目录在:E:/Microsoft SDKs/Windows/v7.0/Samples/multimedia/directshow/baseclasses,编译时debug版本和release版本生成的lib文件名字是不同的,前者为strmbasd.lib,后者为strmbase.lib。得把生成的lib文件添加的项目引用中.
还有一个问题是,VS 2005以前,基本上都引用了 largeint.lib,但VS2005没有这个lib了,只要删除此引用即可。但这样还不行,简单删除后,肯定编译不过的,好多CLSID都显示未定义,此时看下面的解释:
在应用strmbase.lib的时候还要注意,在VS2005之前的版本中只需包括此库即可,但在VS2005时就不行了,甚至连基本的CLSID都找不到,事实上在链接时要加上:STRMBASE.lib strmiids.lib winmm.lib dmoguids.lib。这样应用程序编译才能通过。
还有最麻烦的就是工程include 和 lib 引用的位置次序,一不留神,放错了位置,会出现好多的fatal error,其实仅仅是一些include和lib的次序问题,下面是一个参考:
include files:
$(VCInstallDir)PlatformSDK/include
E:/Microsoft SDKs/Windows/v7.0/Include
$(VCInstallDir)PlatformSDK/common/include
E:/Microsoft SDKs/Windows/v7.0/Samples/multimedia/directshow/baseclasses
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(FrameworkSDKDir)include
library files:
$(VCInstallDir)lib
$(VCInstallDir)atlmfc/lib
$(VCInstallDir)atlmfc/lib/i386
$(VCInstallDir)PlatformSDK/lib
$(VCInstallDir)PlatformSDK/common/lib
$(FrameworkSDKDir)lib
$(VSInstallDir)
$(VSInstallDir)lib
E:/Microsoft SDKs/Windows/v7.0/Lib
注意:以上仅为32位设置