为什么没有为这些 ATL 简单对象生成 ProgId?
Why is no ProgId generated for these ATL Simple Objects?
我有一个 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
属性。但是,我的注册表中有 none。该 DLL 在每次编译时完全正常注册,并且可以毫无问题地从 COM 客户端使用。
怎么会没有自动生成progid
?
看来我弄错了文档,对于 IDL 协同类,ProgID 不是自动生成的。太可惜了。
无论如何,here 解释了如何稍后将它们添加到 .rgs 文件。
我有一个 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
属性。但是,我的注册表中有 none。该 DLL 在每次编译时完全正常注册,并且可以毫无问题地从 COM 客户端使用。
怎么会没有自动生成progid
?
看来我弄错了文档,对于 IDL 协同类,ProgID 不是自动生成的。太可惜了。
无论如何,here 解释了如何稍后将它们添加到 .rgs 文件。