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 に答える