不能包含DirectShow示例并进行编译(PushSourceDesktop)

时间:2012-07-01 17:45:56

标签: c++ com directshow

所以我正在尝试使用我的其他项目编译PushSourceDesktop示例,这样我就可以使用'new'关键字直接创建对象而无需加载外部dll。我已将项目中的所有文件都包含在内,并将预编译的头文件添加到.cpp文件中。即使在google和其他各种搜索的帮助下,我也无法理解这些错误。希望有人在这里提供一些帮助,提前谢谢!

Error   4   error C2065: 'm_pString' : undeclared identifier    c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\directshow\baseclasses\wxdebug.h    292 1   record3
Error   5   error C2065: 'm_pString' : undeclared identifier    c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\directshow\baseclasses\wxdebug.h    316 1   record3
Error   1   error C2146: syntax error : missing ';' before identifier 'm_pString'   c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\directshow\baseclasses\wxdebug.h    295 1   record3
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\directshow\baseclasses\wxdebug.h    295 1   record3
Error   3   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\directshow\baseclasses\wxdebug.h    295 1   record3
    8   IntelliSense: identifier "PTCHAR" is undefined  c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\directshow\baseclasses\wxdebug.h    295 5

1 个答案:

答案 0 :(得分:1)

问题与SDK标头的包含顺序有关。您可能需要在代码之上的某处添加#include <tchar.h>,因为PTCHAR是编译器无法找到的。

因为DirectShow基类是非常特定的类基础,所以我建议你不要将它与你正在使用的其他C ++代码混合(例如ATL,WTL或MFC)。这是可能的,但这可能会导致类似于您问题中的问题。

相反,您可以将过滤器保存在单独的DLL中,您可以通过CoCreateInstance或私下通过DllGetClassObject/CreateInstance对其进行实例化,并与其进行通信over private interface