VC 2010 Командная строка x64 неправильно подбирает libcmt.lib
Здесь должно быть что-то, чего мне не хватает. Я настроил vcvars64.bat со средой, и компиляция и компоновка почти всех моих библиотек работают отлично, за исключением libcmt.lib. (Версия /MT MSVCRT.lib.) Это входит в 32-разрядный VC 2010, но я использую cl.exe и link.exe из папки amd64, которая была установлена вместе с Platform SDK 7.1, поэтому у меня есть Понятия не имею, почему он это взял.
Вот моя командная строка:
link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\dev\Python31\libs /LIBPATH:C:\dev\Python31\PCbuild\amd64 ws2_32.lib advapi32.lib kernel32.lib /EXPORT:PyInit_winrandom build\temp.win-amd64-3.3\Release\src/winrand.obj /OUT:build\lib.win-amd64-3.3\Crypto\Random\OSRNG\winrandom.pyd /IMPLIB:build\temp.win-amd64-3.3\Release\src\winrandom.lib /MANIFESTFILE:build\temp.win-amd64-3.3\Release\src\winrandom.pyd.manifest /VERBOSE
Что я пробовал: /nodefaultlib:libcmt
заставляет компоновщик даже не смотреть на эту библиотеку. libcmt.lib /nodefaultlib:libcmt
в любом порядке просто активирует то же самое поведение, оно все еще смотрит только на старый неправильный путь, как видно из подробного вывода:
Searching [SDK]\lib\x64\ws2_32.lib:
Searching [SDK]\lib\x64\advapi32.lib:
Searching [SDK]\lib\x64\kernel32.lib:
Searching [VS]\VC\LIB\libcmt.lib:
В моем пути нет папки lib, и%lib% - это "[SDK]\lib\x64;[VS]\VC\LIB" (полные пути опущены).
Я не знаю, почему эту одну библиотеку сначала ищут по неправильному пути, кто-нибудь знает?
1 ответ
Ваше значение переменной среды LIB неверно, оно должно быть [VC]\lib\amd64
чтобы получить каталог, содержащий версию CRT-библиотек для x64.
Неясно, как вы поняли это неправильно. Вы должны использовать vcvarsall.bat, передав "x64", чтобы выбрать правильную среду сборки. Он, в свою очередь, вызывает правильный файл.bat, vc \ bin \ amd64 \ vcvars64.bat, если вы передали "x64". Не используйте vcvars64.bat напрямую.
Воспользуйтесь предварительно приготовленным ярлыком, который был создан при установке VS. Вы найдете его в меню "Пуск" + "Программы", обязательно выберите "Командная строка Visual Studio x64 Win64". Он вызывает vsvarsall.bat