Dshow--碰到的问题

#新版本的DirectX SDK找不到DirectShow SDK

Previous versions of the DirectShow SDK were included in the DirectX SDK. The last version of the DirectX SDK to include DirectShow was DirectX 9.0 SDK Update - (February 2005) Extras. After this version, DirectShow was moved to the Windows SDK. To get the latest version of the DirectShow headers, libraries, and samples, download the Windows SDK。意思是:DX9以上的版本不包含DirectX SDK,要到Windows SDK去找,见:http://msdn.microsoft.com/en-us/library/windows/desktop/dd375454%28v=vs.85%29.aspx

# 编BaseClasses出现error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
解决:
这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整型。但是vs2005不支持默认整型。
打开:项目----项目属性----配置属性----C/C++----命令行,在附加选项那里添加/wd4430这个选项。
# strmbasd.lib(amfilter.obj) : error LNK2001: unresolved external symbol _IID_IPin
  strmbasd.lib(wxdebug.obj) : error LNK2001: unresolved external symbol _IID_IPin
  ...
解决:添加库"strmiids.lib"。
# MyOutputPin.obj : error LNK2001: unresolved external symbol "void __stdcall DbgAssert(wchar_t const *,wchar_t const *,int)" (?DbgAssert@@...)
解决办法:看到wchar_t,就知道是宽字节,将"Character Set"的"Use Unicode Character Set"改成"Use Multi-Byte Character Set"。
#error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)

原因:缺少POINTER_64的定义。

解决办法:

第一种:添加如下一句,

#define POINTER_64 __ptr64       //zf

typedef void *PVOID;
typedef void * POINTER_64 PVOID64;

第二种:调整include文件夹的顺序来解决问题,platform SDK中的winnt.h,DDK中的,vc6.0 自带的winnt.h有多个。 dxsdk 中的这些所用到的winnt.h版本不同。

通过调整IDE 工具-> 选项-> 项目vc++目录;包含文件include 的顺序来解决这类问题,使dxsdk需要的winnt.h所在文件夹在最上面。

采用第二种方法,居然DEBUG解决,RELEASE不能解决,最后还是采用第一种方法解决问题。

 

 

你可能感兴趣的:(Dshow--碰到的问题)