【问题标题】:Why is no ProgId generated for these ATL Simple Objects?为什么没有为这些 ATL 简单对象生成 ProgId?
【发布时间】: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


【解决方案1】:

似乎我弄错了文档,对于 IDL coclasses,ProgID 不是自动生成的。太糟糕了。

不管怎样,here 后面会解释如何将它们添加到 .rgs 文件中。

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 2013-02-19
    • 2013-03-10
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多