多数の相互参照 COM ライブラリを持つ VS2010 プロジェクトを維持しています。VS2010 がインストールされているランダムなワークステーションからビルドできるようにプロジェクトを構成しようとしています。ワークステーションは 32 ビットと 64 ビットの両方である可能性があるため、プロジェクトを「出力を登録する」ように構成すると、64 ビット DLL を読み込んで DllRegisterServer を呼び出すことができないため、ビルドは 32 ビット マシンでビルドに失敗します。
次に例を示します。プロジェクト B の Typelib は、プロジェクト A の Typelib を参照します。プロジェクト C は、次のステートメントを介してプロジェクト B を参照します。
#import "B.tlb"
ライブラリ B は A を参照するため、B.tlb がインポートされると、コンパイラは A から型を読み込もうとします。したがって、A が登録されていない場合、コンパイルは次のように失敗します。
error C4772: #import referenced a type from a missing type library ...
OleView アプリケーションを使用して B.tlb を開こうとしましたが、regsvr32 を使用して登録されている場合、ライブラリ A 参照の正しいファイル名のみが表示されます。
だから、ここでの私の質問は次のとおりです。ライブラリ参照が適切に解決される別の方法はありますか? たとえば、ライブラリの TLB の名前を .tlb などに変更します。