【问题标题】:Making a DLL into a COM component将 DLL 制作成 COM 组件
【发布时间】:2012-11-03 16:51:42
【问题描述】:

我是 COM 新手,所以这可能是个愚蠢的问题,但我还是会问。 :)

据我了解,为了制作 DLL COM,我们需要在 .idl 文件中定义其接口,使用 MIDL 编译器对其进行编译,然后简单地实现使用已定义接口的类。然后我们需要暴露DllRegisterServerDllUnregisterServerDllGetClassObject。它应该足够了,对吧?

但是我做了所有这些,当我尝试在客户端 C++ 程序中检查它时,我的视觉工作室说 (在#import 语句中)它找不到 tlh 文件...

这就是我的 .idl 的样子:

import "someIdl.idl";

[
    uuid(some-guid-Num1),
    version(1.0),
    helpstring("The library's description")
]
library LibName
{
    importlib("stdole2.tlb");
    [
        uuid(some-guid-Num2),
        helpstring("Some Description")
    ]
    coclass ClassName
    {       
        interface Interface_defined_in_someIdl;
    }
};

我是否在 .idl 中遗漏了什么?我是不是弄错了 COM 制作过程?

【问题讨论】:

  • 我的 COM 有点生锈了,但是你记得用 regsvr32 注册 DLL 吗?
  • 我愿意。我将两个 GUID(库的和类的)都注册到 Current User\Classes\CLSID。图书馆的 GUID 是否应该注册到另一个位置?
  • 但我认为不是这样。我有另一个我下载的 COM DLL,取消注册它并没有收到错误...

标签: c++ com


【解决方案1】:

问题是我没有将 TLB 文件作为资源嵌入到 DLL 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2011-07-27
    • 2021-03-19
    • 2019-11-11
    • 2010-11-14
    • 2012-09-22
    相关资源
    最近更新 更多