我刚从 Visual Studio 2008 切换到 Visual Studio 2010,我的一个项目现在出现链接器错误:
链接:致命错误 LNK1104:无法打开文件“libboost_filesystem-vc90-mt-gd-1_46_1.lib”
我确实重建了 boost,我在 lib 文件夹中看到了 vc10 库,但我无法弄清楚它为什么/如何仍然引用 vc90 库?我检查了链接器属性,并且指向了正确的文件夹(即 vc10 库的文件夹)。在输入部分我没有指定库,所以我不知道它是如何获得对 vc90 库的引用的。
有谁知道这个问题的解决方案是什么?
更新
我用来构建 boost 的构建命令是:
bjam --build-dir=c:\boost --build-type=complete --with-filesystem --toolset=msvc address-model=64 阶段
它自动产生以下输出(除其他外):
阶段\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“_DEBUG”/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:precise /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
现在,如果我能弄清楚为什么它引用了错误的库!