2

私は COM を初めて使用するので、これはばかげた質問かもしれませんが、とにかく質問します。:)

私が理解している限りでは、DLL COM を作成するには、そのインターフェイスを .idl ファイルで定義し、MIDL コンパイラでコンパイルしてから、定義されたインターフェイスを使用するクラスを実装するだけです。DllRegisterServer次に、 、DllUnregisterServerおよびを公開する必要がありDllGetClassObjectます。それで十分なはずですよね?

しかし、私はこれをすべて実行し、クライアント C++ プログラムでそれをチェックしようとすると、私のビジュアル スタジオは (#import ステートメントで) tlh ファイルが見つからないと言います...

これは私の .idl がどのように見えるかです:

import "someIdl.idl";

[
    uuid(some-guid-Num1),
    version(1.0),
    helpstring("The library's description")
]
library LibName
{
    importlib("stdole2.tlb");
    [
        uuid(some-guid-Num2),
        helpstring("Some Description")
    ]
    coclass ClassName
    {       
        interface Interface_defined_in_someIdl;
    }
};

.idl に何か不足していますか? COM の作成プロセスを間違えたのでしょうか?

4

1 に答える 1

1

問題は、TLB ファイルをリソースとして DLL に埋め込まなかったことです。

于 2012-11-03T08:51:42.713 に答える