这里一定有我想念的东西。我已经在环境正常的情况下设置了 vcvars64.bat,编译和链接几乎所有我的库都工作得很好,除了 libcmt.lib。(MSVCRT.lib 的 /MT 版本。)这包含在 32 位 VC 2010 中,但我使用的是与 Platform SDK 7.1 一起安装的 amd64 文件夹中的 cl.exe 和 link.exe,所以我有不知道为什么要捡这个。
这是我的命令行:
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”(省略了完整路径)。
我不知道为什么首先在错误的路径上搜索这个库,有人知道吗?