【发布时间】:2016-12-25 21:29:18
【问题描述】:
我有一个 ATL DLL,其中包含一堆 ATL 简单对象(= COM 对象),所有这些都是由向导生成的。
IDL 文件包含许多接口和一个库部分,例如:
[
object,
uuid(00000000-0000-0000-0000-000000000000),
dual,
nonextensible,
pointer_default(unique)
]
interface IFoo : IDispatch{
[id(1)] HRESULT FooMethod();
};
[
uuid(00000000-0000-0000-0000-000000000000),
version(1.0),
]
library MyLib
{
importlib("stdole2.tlb");
[
uuid(00000000-0000-0000-0000-000000000000)
]
coclass Foo
{
[default] interface IFoo;
};
}
MSDN 似乎说应该为每个 coclass 自动生成一个 progid 属性。但是,我的注册表中没有。否则,该 DLL 在每次编译时完全正常注册,并且可以从 COM 客户端使用而不会出现任何问题。
progids 不是自动生成的怎么会发生?
【问题讨论】:
-
这是 ATL 简单对象向导中的一个陷阱。您输入“短名称”,所有字段都会自动填写,没有人会介意默认值。除了一个,埋在右下角。是的。
标签: visual-studio-2013 com idl progid coclass