2

CLR .dll を使用してアンマネージ C/C++ コードと対話する Visual Studio 2010 でコンパイルしている WPF アプリがあります。これは、WPF が CLR .dll を参照し、CLR .dll がアンマネージ コードを参照するという考え方です。残念ながら、アンマネージ C/C++ コードと関連ライブラリはすべて C/C++ ランタイムに静的にリンクしているため、ひどいリンクの問題が発生していますが、CLR .dll でそのコード生成メソッドを使用しようとすると、エラーがスローされます。 /clr オプションと CRT への静的リンクには互換性がないためです。これらをどうにかして接着する必要があります。

私が考えたのは、すべてのアンマネージ コードを 1 つのパッケージ (これも CRT に静的にリンクされている) に含む追加の .dll を作成し、それを CLR .dll にリンクして、アプリにリンクすることでした (blech !)。私はそのような .dll を作成しようとしましたが、問題は (おそらく明らかに?) 静的な .lib ファイルからシンボルをまったく必要としなかったため、それらのシンボルをまったく取り込まなかったことです。シンボル参照 (/OPT:NOREF) を強制しようとしましたが、何も起こらなかったようです。ライブラリに「リンク」するのは空の .dll ですが、実際には何もしていません。したがって、そのアイデアは大失敗です。

私はこのすべてに間違ってアプローチしていますか?

一部のアンマネージ ライブラリのソース コードがないため、それらを再コンパイルして CRT に動的にリンクすることはできません。これらのリンクの問題は本当にイライラしています!

ご提案ありがとうございます。

更新:/MTこれは、/MDモジュールを混ぜ合わせようとするのと同じことだと思いますが、これによれば、これは不可能です。サードパーティのライブラリを制御できないプロジェクトをリンクすることになっているのはどうしてですか? 彼ら全員が同じランタイム ライブラリ リンク方法を使用することを選択したことを願っていますか?! 恐ろしい考えのようです...

4

1 に答える 1