2

在 C++ 组件的 IDL 文件中,我有如下内容,允许该属性是 COM 可见的:

interface IInterface
{
    [propget, id(1), helpstring("the ID")]
         HRESULT ID([out, retval] long *pVal);
}

当我构建 dll 并在 OLEView 中打开时,我看到类似这样的内容!?

interface IInterface
{
    [propget, id(0x00000001), helpstring("the ID")]
         HRESULT id([out, retval] long *pVal);
}

请注意,ID显示为id。但是,如果我修改此代码,说“ID2”,那么ID2会按预期显示。然后我改回“ID”并再次显示id。这对我来说很莫名其妙。机器上必须有一些东西,这意味着该属性的 DLL 公开名称是小写的,但我在注册表中找不到任何东西。

有任何想法吗?很困惑...

4

1 回答 1

3

我猜这与id 在 IDL 中具有特殊含义的事实有关(如您自己的示例所示) - 如果您不必使用 IDL 关键字命名您的属性,我只会使用不同的名称。

如果出于某种原因必须为属性使用此名称,则可以在导入时使用 rename 属性以大写形式使用它。

于 2010-11-08T14:55:00.903 回答