2

Visual Studio 2008 を使用して、依存関係が豊富なかなり大規模で複雑なプログラムを構築しています。Windows テスト システムで 64 ビット ビルドを実行すると、SxS 問題に関する警告の実行に失敗します。

少し調べてみたところ、マニフェスト ファイルに含まれていることがわかりました。

<dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>

ビルドログに目を通し、プロジェクトをリンクして/VERBOSE:LIB確認しました

1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
...
1>Searching libraries
...
1>    Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64\MSVCRTD.lib:

すべての .obj ファイルを実行dumpbin /DIRECTIVESしましたが、msvcrtd.lib への参照がありません。

これはリリース ビルドです。MSVCRTD にリンクしようとしているのはなぜですか?

msvcrtd からリンクされた関数のテーブルを生成する方法はありますか?

ありがとう

4

1 に答える 1

1

おっと、この質問は少し性急になりすぎました。/MAP解決策は、リンカー オプションに追加することです。

于 2013-10-19T00:16:05.917 に答える