2

Visual Studio 2008 から Visual Studio 2010 に切り替えたところ、プロジェクトの 1 つでリンカー エラーが発生しています。

リンク: 致命的なエラー LNK1104: ファイル 'libboost_filesystem-vc90-mt-gd-1_46_1.lib' を開けません

ブーストをリビルドしたところ、lib フォルダーに vc10 ライブラリが表示されましたが、まだ vc90 ライブラリを参照している理由/方法がわかりません。リンカーのプロパティを確認しましたが、正しいフォルダー (つまり、vc10 ライブラリのフォルダー) を指しています。入力セクションでは、ライブラリを指定していないため、vc90 ライブラリへの参照をどのように取得したかはわかりません。

この問題の解決策を知っている人はいますか?

アップデート

ブーストをビルドするために使用したビルド コマンドは次のとおりです。

bjam --build-dir=c:\boost --build-type=complete --with-filesystem --toolset=msvc address-model=64 ステージ

自動的に次の出力が得られました(とりわけ):

stage\lib\boost_filesystem-vc100-mt-1_46_1.lib

コマンドライン

リンカ:

/OUT:"bin\x64\Debug\NEST2.dll" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Users\USER\Desktop\sandbox\boost_1_46_1\bin\x64\lib" /LIBPATH:"C:\Users\ USER\Desktop\sandbox\db-5.1.25\build_windows\x64\Release" /DLL "ws2_32.lib" "advapi32.lib" "libdb51.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"tmp\x64\ Debug\NEST2.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\dev\app\NEST2\bin\x64\Debug\NEST2. pdb" /ASSEMBLYDEBUG /SUBSYSTEM:WINDOWS /PGD:"C:\dev\app\NEST2\bin\x64\Debug\NEST2.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE

コンパイラ:

/I"C:\Users\USER\Desktop\sandbox\boost_1_46_1" /I"C:\Users\USER\Desktop\sandbox\db-5.1.25\build_windows" /Zi /nologo /W3 /WX- /Od / Ot /D "WIN32" /D "_WIN64" /D "_D​​EBUG" /D "_WINDOWS" /D "_USRDLL" /D "NEST2_EXPORTS" /D "_HAS_ITERATOR_DEBUGGING=0" /D "__SECURE _SCL=0" /D "_WINDLL " /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /MDd /GS /fp:正確な /Zc:wchar_t /Zc:forScope /Fp"tmp\x64\Debug\NEST2.pch" /Fa"tmp\ x64\Debug\" /Fo"tmp\x64\Debug\" /Fd"tmp\x64\Debug\vc100.pdb" /Gd /errorReport:queue

アップデート 2.0

1>------ Build started: Project: NEST2, Configuration: Debug x64 ------
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(1200,9): warning : The referenced project '{FD045D60-ABAD-4A6C-9794-9BFB085FC3E7}' does not exist.
1>  
1>  Starting pass 1
1>  Processed /DEFAULTLIB:msvcprtd
1>  Processed /DEFAULTLIB:MSVCRTD
1>  Processed /DEFAULTLIB:OLDNAMES
1>  Processed /DEFAULTLIB:libboost_filesystem-vc90-mt-gd-1_46_1.lib // <--- Here it is
1>  Processed /DEFAULTLIB:libboost_system-vc90-mt-gd-1_46_1.lib // <--- and here!
1>  Processed /DEFAULTLIB:uuid.lib

間違ったライブラリを参照している理由を突き止めることができれば!

4

2 に答える 2

2

Visual Studio 2010 Service Pack 1に更新した後、リンカーの問題は解消されました。msvcフラグまたはmsvc-10.0フラグを使用してブーストを構築すると、同じ出力が得られたため、問題に影響はありませんでした。

さらに、リンク時に不一致が発生していたため、_ITERATOR_DEBUG_LEVELマクロを削除する必要がありました(リンカーエラーLNK2038)。

SP1がインストールされるまで正しくリンクされない理由はわかりません。誰かがアイデアを持っている場合は、投稿してください。

于 2011-07-07T15:37:50.233 に答える
1

C++ リンカ コマンド ラインを調べて、vc90 ライブラリを参照していないことを確認してください。その場合、lib 依存関係を「追加ライブラリ」セクションに手動で追加した可能性があります。

それでも修正できない場合は、コンパイルとリンクの両方のコマンド ラインをここに貼り付けてください。

于 2011-07-06T23:54:55.220 に答える