首页 文章

从Visual Studio 2008切换到Visual Studio 2010,现在无法链接到boost文件系统

提问于
浏览
2

我刚刚从Visual Studio 2008切换到Visual Studio 2010,我的一个项目现在收到链接器错误:

链接:致命错误LNK1104:无法打开文件'libboost_filesystem-vc90-mt-gd-1_46_1.lib'

我做了重建boost,我在lib文件夹中看到了vc10库,但我无法弄清楚为什么/它仍然引用vc90库?我检查了链接器属性,我指向正确的文件夹(即vc10库的文件夹) . 在输入部分我没有指定库,所以我不知道它是如何获得对vc90 lib的引用 .

有谁知道这个问题的解决方案是什么?

更新

我用来构建boost的构建命令是:

bjam --build-dir = c:\ boost --build-type = complete --with-filesystem --toolset = msvc address-model = 64 stage

它会自动产生以下输出(除其他外):

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“_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

现在,如果我只能弄清楚为什么它引用了错误的库!

2 回答

  • 2

    在我更新到Visual Studio 2010 Service Pack 1后,链接器问题消失了 . 使用msvc标志或msvc-10.0标志进行BUilding boost会产生相同的输出,因此对该问题没有影响 .

    另外,我不得不删除_ITERATOR_DEBUG_LEVEL宏,因为它在链接时导致不匹配(链接器错误LNK2038) .

    我不确定为什么在安装SP1之前它不会正常链接,所以如果有人有想法,那么请发布它 .

  • 1

    检查C链接器命令行并确保它不引用vc90库 . 如果是,您可能已将lib依赖项手动添加到“其他库”部分 .

    如果仍然无法修复它,请在此处粘贴编译和链接命令行 .

相关问题