0

这里一定有我想念的东西。我已经在环境正常的情况下设置了 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”(省略了完整路径)。

我不知道为什么首先在错误的路径上搜索这个库,有人知道吗?

4

1 回答 1

1

你的LIB环境变量值不对,应该是[VC]\lib\amd64获取到x64版本的CRT libs的目录。

目前还不清楚你是怎么弄错的。您应该使用 vcvarsall.bat,传递“x64”来选择正确的构建环境。如果您传递了“x64”,它会依次调用正确的 .bat 文件 vc\bin\amd64\vcvars64.bat。不要直接使用 vcvars64.bat。

喜欢安装 VS 时创建的预编译快捷方式。您会在开始 + 程序中找到它,请务必选择显示“Visual Studio x64 Win64 命令提示符”的那个。它调用 vsvarsall.bat

于 2012-10-21T13:43:59.090 回答