【发布时间】:2012-11-03 16:51:42
【问题描述】:
我是 COM 新手,所以这可能是个愚蠢的问题,但我还是会问。 :)
据我了解,为了制作 DLL COM,我们需要在 .idl 文件中定义其接口,使用 MIDL 编译器对其进行编译,然后简单地实现使用已定义接口的类。然后我们需要暴露DllRegisterServer、DllUnregisterServer和DllGetClassObject。它应该足够了,对吧?
但是我做了所有这些,当我尝试在客户端 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,取消注册它并没有收到错误...