【问题标题】:What DLLs do I #import when using DirectShow or other COM libraries in C++?在 C++ 中使用 DirectShow 或其他 COM 库时我要#import 哪些 DLL?
【发布时间】:2016-12-19 10:16:12
【问题描述】:

我在从 C++ 调用 DirectShow 时尝试使用 Compiler COM Support。从earlier post 我知道我需要#importquartz.dll 和qedit.dll。这样做给了我像 IGraphBuilderPtr 这样的智能指针类,我可以看到 IntelliSense 支持它。我现在尝试使用ICaptureGraphBuilder2,但它没有出现在 IntelliSense 中并尝试使用#import devenum.dll,qcap.dll 给了我一个"C1803: Cannot open type library file"。所以,有几个问题:

  1. 使用 DirectShow 接口时我需要哪些 DLL #import
  2. 一般来说,给定一个 COM 库,我如何知道我可以#import 哪些 DLL?

【问题讨论】:

    标签: c++ visual-c++ com directshow typelib


    【解决方案1】:

    对于 C++ 开发,您不需要 #import。相反,你

    #include <dshow.h>
    #pragma comment(lib, "strmiids.lib")
    

    你有带有 ATL 的智能指针,例如CComPtr&lt;IFilterGraph2&gt;(或QzCComPtr,只有在开发过滤器而不是高级 DirectShow 消费者代码时才有意义)。

    因此,

    使用 DirectShow 接口时我需要 #import 哪些 DLL?

    无。

    一般来说,给定一个 COM 库,我如何知道可以#import 哪些 DLL?

    您需要知道 DLL 名称或更确切地说是类型库标识符。您可以从文档或使用 SDK 工具(如 COM/OLE Viewer)或通过注册表查看。我建议使用类型库标识符导入。

    如果您需要 GUID,它只会从 C++ 代码导入 DirectShow DLL,而这些 GUID 已被弃用并从 SDK 中排除。

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多