2012-10-21 68 views
0

必须在这里丢失一些东西。我已经在环境中设置了vcvars64.bat,编译和链接几乎所有的库都很好,除了libcmt.lib。 (MSVCRT.lib的/ MT版本)这包含在32位VC 2010中,但我使用的是Platform SDK 7.1安装的amd64文件夹中的cl.exe和link.exe,所以我有不知道它为什么选择这个。VC 2010命令行x64拾取错误libcmt.lib

这里是我的命令行:

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首先在错误的路径上搜索,有谁知道?

回答

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

+0

我不敢相信我做到了;我要指责它熬夜太晚了。我可能应该已经在网上阻止了一个.bat,但它看起来很简单。可悲的是,SDK编译器安装程序不包含这些文件。谢谢。 – SilverbackNet