3

別の Proxy Server プロジェクトで定義したインターフェイスからそのインターフェイスを派生させているときに、idl ファイルでインターフェイスを定義し、同じファイル内のライブラリ ブロックでそれを派生する CoClass を作成できないのはなぜですか?

[
 object,
 uuid(00000000-0000-0000-0000-000000000000),
 pointer_default(unique)
] interface IMyInterfaceB: IMyInterfaceA
{
    [id(1), helpstring("")]
    HRESULT NewMethod();
}

[
 uuid(10000000-0000-0000-0000-000000000000),
 helpstring("Type Library 1.00"),
 version(1.00)
]
library MyLibrary
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    [
        uuid(20000000-0000-0000-0000-000000000001),
        helpstring("My Class")
    ]
    coclass CMyClass
    {
        interface IMyInterfaceA;
        //interface IMyInterfaceB; /* error when I remove rem */
    };

}

1> midl\oleaut32.dll: エラー MIDL2020: タイプ ライブラリの生成エラー: LayOut に失敗しました: IMyInterfaceB (0x800288C6

4

3 に答える 3

1

Hans Passant が指摘したように、GUID を選択するべきではなく、ジェネレーターを使用してそれらを生成する必要があります。これは問題ではありませんでしたが、性質は似ていました。インターフェイスを定義するとき、適切な ID スキーマに従っていませんでした。これまで重要ではなかったからです。

Microsoft .NET を使用した COM プログラミングの適切なセクションを読み直すことになると思います。その理由は、Visual Studio の Advanced Mode 機能をオンにしてその存在を明らかにし、エラー ルックアップ ツールを初めて試したときにわかりました。

学んだ教訓 :/

BekaD:

于 2011-08-09T00:07:31.217 に答える