为什么没有为这些 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 文件。