Перешел с Visual Studio 2008 на Visual Studio 2010 и теперь не может установить связь с файловой системой - PullRequest
2 голосов
/ 07 июля 2011

Я только что перешел с Visual Studio 2008 на Visual Studio 2010, и один из моих проектов теперь получает ошибку компоновщика:

ССЫЛКА: фатальная ошибка LNK1104: невозможно открыть файл 'libboost_filesystem-vc90-mt-gd-1_46_1.lib '

Я перестроил boost и вижу библиотеки vc10 в папке lib, но не могу понять, почему / как она все еще ссылается на библиотеки vc90?Я проверил свойства компоновщика и указываю на правильную папку (то есть на папку библиотек vc10).В разделе ввода я не указываю библиотеку, поэтому я не знаю, как она получила ссылку на библиотеку vc90.

Кто-нибудь знает, каково решение этой проблемы?

Обновление

Команда сборки, которую я использовал для сборки 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: \Пользователи \ 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: точный / 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

Update 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 голосов
/ 07 июля 2011

После обновления до Visual Studio 2010 с пакетом обновления 1 проблемы с компоновщиком исчезли.Построение ускорения с флагом msvc или флагом msvc-10.0 привело к тому же выводу, так что это никак не повлияло на проблему.

Кроме того, мне пришлось удалить макрос _ITERATOR_DEBUG_LEVEL, поскольку он вызывал несоответствие при компоновке(Ошибка компоновщика LNK2038).

Я не уверен, почему он не будет связываться должным образом, пока не будет установлен SP1, поэтому, если у кого-то есть идея, пожалуйста, опубликуйте ее.

1 голос
/ 07 июля 2011

Проверьте командную строку C ++ Linker и убедитесь, что она не ссылается на библиотеки vc90.Если это так, возможно, вы вручную добавили зависимость lib в ваш раздел «дополнительных библиотек».

Если вы все еще не можете это исправить, вставьте сюда командную строку компиляции и компоновки.

...