2010-12-03 2 views
2

ソフトウェアを開発するときに同僚がコピーしてカスタマイズするテンプレートVS .NET 2003プロジェクトがあります。Visual Studio .NET 2003 - libcmtとlibcmtdの特定のライブラリを無視する

リリースとデバッグビルドの両方でlibcmt.libを持つようにIgnoreSpecificLibraryプロパティを設定すると、テンプレートが変更されているように見えます(つまり、リリースとデバッグの両方について、ビルダーはリンカーのlibcmt.libを無視する必要があります)。

いくつかのプロジェクトはビルドされているので、いくつかのランタイムの問題を引き起こしているように見えるlibcmtd.lib(プロジェクトの.mapファイルを見れば明らかです)ブレークポイントが設定されているかのように)。

libcmt.libを除外するようにIgnoreSpecificLibraryを設定すると、libcmtd.libに対するプロジェクトリンクが自動的に作成されますか?

奇妙なのは、(不適切な設定で)テンプレートをビルドするとlibcmt.libとリンクするのに対して、カスタマイズされたプロジェクト(一部ではない)のいくつかはlibcmtd.libとリンクするということです。

アイデア?

答えて

2

でプロジェクトをコンパイルします:リンカをコンパイルした後

あなたのオブジェクト・ファイルを取り、他の人 間でシンボルテーブルを作成し、要求をsymolました満たされていない その後、リンカーはあなたのライブラリーのリストを調べて、未完成の記号 を解決しようとします。 libcmt.libを無視するので、サードパーティのライブラリ は未解決のシンボルを残したり追加したりしています。 はdebugでコンパイルされていたため、licmtd.lib(およびおそらく他のライブラリも同様)からの解決のためにリンカ要求 が含まれています。オプション。

それは他の解決に見られるにもかかわらず、 (これらのシンボルは、最も可能性の高いLIBCMT.LIBによって を解決されるだろうLIBCMT.LIBあなたは無視されていなかったとlibcmtd.libからのものでプルする必要はなかった場合

igmore libcmtd.libにもお試しください。今すぐunresolvd外部を取得する場合 それはprobebly libcmt.dllを無視するための良い考えではありませんでした。

2

libcmt.libは、動的バージョンmsvcrt.libと競合するため、多くのプロジェクトで無視されます。 は、リンカでLIBCMTを無視する。これは、何が起こったかであるMSVCRT.LIB

+0

ここでの問題は、libcmt.libではなくlibcmdt.libでコンパイルされていることです。これが私の混乱の原因です。私がlibcmt.libを無視すると言ったら、libcmtd.libは削除のプロセスを通してリンクされますか? – tefd

+0

私はそれ以来、開発者が別のライブラリのデバッグバージョンとリンクしていたことを発見しました。これがデバッグlibcmtdを引き出すための引き金になるでしょうか? – tefd

+0

@tefd、あなたはlibcmtdを引っ張っているライブラリのデバッグバージョンについて正しいです。リリースビルドを入手できる場合は、問題を解決する必要があります。さもなければ、それは無視するハックが場に出るところです。 – patrickvacek

関連する問題