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

Другие вопросы по тегам