c++ - 无法包含 DirectShow 示例并对其进行编译 (PushSourceDesktop)

标签 c++ com directshow

因此,我正在尝试将 PushSourceDesktop 示例与我的其他项目一起编译,这样我就可以使用“new”关键字直接创建一个对象,而无需加载外部 dll。我已将所有文件包含在我的项目中,并将我的预编译 header 添加到 .cpp 文件中。即使在谷歌和其他各种搜索的帮助下,我也无法真正弄清楚这些错误。希望这里的人能够阐明一些问题,在此先感谢!

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

最佳答案

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

因为 DirectShow 基类是非常具体的类基,我建议您不要将它与您拥有的其他 C++ 代码(例如 ATL、WTL 或 MFC)混合使用。这是可能的,但这可能会继续导致与您问题中的问题类似的问题。

相反,您可以将过滤器保存在单独的 DLL 中,您可以通过 CoCreateInstance 实例化它或私下通过 DllGetClassObject / CreateInstance ,并与之沟通over private interface .

关于c++ - 无法包含 DirectShow 示例并对其进行编译 (PushSourceDesktop),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284296/

相关文章:

c++ - 按值与按引用传递标准算法迭代器参数

android - 链接器命令在 Android Studio 中失败并退出代码 1?

c++ - 为什么类的默认构造函数和析构函数是内联的?

c++ - 为什么这些方法调用不明确?

c# - 托管代码应该向非托管代码返回错误还是抛出异常?

c# - DirectShow/WPF 线程问题

C++ DLL 可以通知调用程序它的进度

windows - 在没有 ResetEvent 的情况下调用 setEvent

c++ - 找不到RGBFilters入口点DllRegisterServer

directshow - DirectShow 中 GMFBridge 的使用