2016-09-07 1 views
1

/MTコンパイラオプションは、アプリケーションにマルチスレッドの静的バージョンのランタイムライブラリを使用させることを理解します。Visual Studio C++:/ MTを使用すると、実行時ライブラリが複数回リンクされますか?

私のソリューションは、メインプロジェクトPrjMainをWin32コンソールアプリケーション、PrjLibを静的ライブラリとしてコンパイルしたものとし、両方とも\MTを使用しているとします。 CRTは最終的にPrjMain.exeにリンクされますか?PrjMainで1回、PrjLibを静的ライブラリとして1回ですか?

答えて

1

CRTは1度にのみリンクされます。メインプロジェクトとPrjLibライブラリは、プロジェクトとライブラリの両方が1つのバイナリにコンパイルされている限り、同じ静的CRTにリンクします。

静的なCRTを使用するモジュールと、1つのバイナリでDLL CRTを使用するモジュールを混在させる場合、または静的ライブラリを使用する複数のバイナリ(実行可能ファイルとDLL)を使用する場合に問題が発生します。そのような場合には、CRTの2つのコピーがロードされ、問題が発生する可能性があります。

関連する問題