7

/MT でコンパイルされた大量のコードがあります (つまり、CRT に対して静的にリンクすることを期待しています)。これを、/MD でビルドされた静的なサードパーティ ライブラリと組み合わせる必要があります (つまり、CRT を動的にリンクすることを期待しています)。

理論的には、再コンパイルせずに2つを1つの実行可能ファイルにリンクすることは可能ですか?

/nodefaultlib:msvcrt とリンクすると、__imp__wgetenv. これらの関数を自分のコードに実装したり、 に転送したりしたくなります。試すwgetenv価値はありますか、それとも次の問題に直面しますか?

残念ながら、サードパーティのコードを別の DLL にパックするという簡単なオプションを取ることは禁じられています :-/

4

3 に答える 3

5

いいえ。/MT と /MD は相互に排他的です。

リンカーの特定の呼び出しに渡されるすべてのモジュールは、同じランタイム ライブラリ コンパイラ オプション ( /MD/MT/LD ) でコンパイルされている必要があります。

ソース

于 2010-08-12T16:28:45.273 に答える
2

OpenSSL ソースでそのような解決策を見つけました: ライブラリのすべての obj ファイルは、組み合わせでコンパイルされます: 。著者が説明したように、このような組み合わせにより、動的 CRT ( ) または静的 CRT ( )のいずれかのアプリケーションでコンパイルできる静的ライブラリを構築できます。/MT /Zl/MD/MT

于 2016-12-01T08:17:56.580 に答える