0

重複の可能性:
ランタイム ライブラリがリンカー オプションではなくコンパイラ オプションであるのはなぜですか?

コンパイル段階で RTL のタイプを選択しなければならない理由がよくわかりません。

たとえば、オプション /MD を使用して 1 つのスタティック ライブラリ A.lib を作成しました。次に、オプション /MT を使用して 2 番目の静的ライブラリ B.lib を作成しました。

A.lib と B.lib を C.exe にリンクしようとすると、リンカー エラーが発生します。

しかし、コンパイル段階 (A.lib および B.lib の作成) では、c または c++ ランタイムからシンボルを解決する理由はありません。

4

1 に答える 1

1

でビルドすると/MD、コンパイラは別の定義済みマクロ セットを使用し、次に でビルドすると、/MT. ドキュメントを参照し_MT_DLL、 などのマクロに注意してください。

コンパイル段階 (作成 A.lib および B.lib) では、c または c++ ランタイムからシンボルを解決する理由はありません。

それは本当ですが、システムヘッダーを含める場合、前処理されたソースは実際には、使用した 、 などのフラグによって異なりコンパイル段階で非常に重要になります/MD/MT

于 2012-03-17T03:10:40.790 に答える