0

C++ コード ベースを VS2005 から VS2010 にアップグレードしており、サード パーティの C++ 依存関係を再構築しています。これらの 32 ビットのビルドには問題はありませんが、64 ビット (x64) のリンクで問題が発生し続けます。多くの標準ライブラリ関数の未解決の外部を取得しています。例えば:

error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (__imp_??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ)

error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z) referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl YAML::Exp::Escape(class YAML::Stream &,int)" (?Escape@Exp@YAML@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAVStream@2@H@Z)

msvcprtd.lib をリンク行に明示的に追加して、ライブラリ解決のデバッグを有効にしようとしましたが、C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64\msvcprtd.lib でシンボルを検索しているように見えますが、そうではありませんそれらを見つける。

なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

2

/showIncludes を有効にして、取り込まれるヘッダー ファイルを確認することもできます。一般に、これらの関数は結果のバイナリにインライン化されると予想されるためです。

于 2010-07-23T15:13:46.657 に答える