所以我正在尝试使用我的其他项目编译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
答案 0 :(得分:1)
问题与SDK标头的包含顺序有关。您可能需要在代码之上的某处添加#include <tchar.h>
,因为PTCHAR
是编译器无法找到的。
因为DirectShow基类是非常特定的类基础,所以我建议你不要将它与你正在使用的其他C ++代码混合(例如ATL,WTL或MFC)。这是可能的,但这可能会导致类似于您问题中的问题。
相反,您可以将过滤器保存在单独的DLL中,您可以通过CoCreateInstance
或私下通过DllGetClassObject
/CreateInstance
对其进行实例化,并与其进行通信over private interface。