我必须在这里找到一些东西。我已经设置了环境很好的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" (省略完整路径)。
我不知道为什么首先在错误的路径上搜索这个lib,有人知道吗?
答案 0 :(得分:1)
您的LIB环境变量值是错误的,它应该是[VC]\lib\amd64
以获取包含CRT库的x64版本的目录。
目前还不清楚你是怎么做错的。您应该使用vcvarsall.bat,传递“x64”以选择正确的构建环境。如果你传递了“x64”,它又会调用正确的.bat文件vc \ bin \ amd64 \ vcvars64.bat。不要直接使用vcvars64.bat。
支持安装VS时创建的预先烹饪的快捷方式。您可以在“开始+程序”中找到它,请务必选择“Visual Studio x64 Win64命令提示符”。它调用vsvarsall.bat