2

複数のプロジェクトを含む従来の Visual Studio ソリューションがあります (Visual Studio 2013 にアップグレードされています)。これらのプロジェクトの 1 つは、COM DLL を生成します。次に、この DLL からの TLB は、importlib 属性を介して別のプロジェクトの IDL ファイルにインポートされます。MIDL コンパイラが依存プロジェクトの IDL ファイルをコンパイルしようとすると、次の警告が生成されます。

警告 MIDL2015: importlib で tlb を読み込めませんでした

TLBファイルへのフルパスを使用すると機能します。

MIDL -> 追加のインクルード ディレクトリ プロパティにパスを追加しようとしましたが、これは IDL、ヘッダー、および ACF ファイル ( /I switch ) のみに対応していると思います。

Linker -> Additional Library Directories プロパティも試しましたが、これもうまくいきませんでした。

importlib 属性を解決するときに MIDL が使用する検索パスは何ですか?

4

1 に答える 1

4

midl.exe には、検索するディレクトリを指定するコマンド ライン オプションがありません。midl.exe は、c:\windows\system32 に保存されているファイル importlib("stdole2.tlb") に問題がないことに注意してください。

プロジェクト + プロパティ、VC++ ディレクトリ、.tlb が保存されているパスをExecutable Directories設定に追加します。「c:\temp」と入力すると、「c:\temp;$(ExecutablePath)」のようになります。

それが多くの賞を獲得するかどうかはわかりません。importlib ディレクティブで相対パスを使用できるように、より予測可能なパスで .tlb を生成または保存すると、今から 1 年後に頭を悩ませる驚きが少なくなります。

于 2014-07-15T09:49:45.447 に答える