Makefile sip-4.16.2生成文件错误

Makefile sip-4.16.2生成文件错误,makefile,sip,Makefile,Sip,我正在尝试在Windows 8计算机上安装PyQt4。我对makefile几乎一无所知,只知道运行make、makeinstall和makeclean。我被SIP的安装过程卡住了 在VisualStudio命令提示符下运行nmake时,出现如下错误: python27.lib(python27.dll):致命错误LNK1112:模块计算机类型“x64”与目标计算机类型“x86”冲突 NMAKE:致命错误U1077:““C:\Program Files(x86)\Microsoft Visual

我正在尝试在Windows 8计算机上安装PyQt4。我对makefile几乎一无所知,只知道运行make、makeinstall和makeclean。我被SIP的安装过程卡住了

在VisualStudio命令提示符下运行nmake时,出现如下错误:

python27.lib(python27.dll):致命错误LNK1112:模块计算机类型“x64”与目标计算机类型“x86”冲突

NMAKE:致命错误U1077:““C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\BIN\link.EXE?”:”? 返回代码“0x458”

停下来

NMAKE:致命错误U107:““C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\BIN\NMAKE.exe”:返回代码“0x2”

停下来


知道问题出在哪里吗?

您遇到的错误:

XXXX.lib(XXXX.dll):致命错误LNK112:模块计算机类型“x64” 与目标计算机类型“x86”冲突

NMAKE:致命错误U1077:“'C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\BIN\link.EXE?':?返回代码“0x458”

声明您尝试构建的makefile是针对平台类型x86的,但您使用的编译器是x64

我遇到了两种方法:

第一种方法

(可能仅适用于VS2013及以上版本)

打开VS2013 x86本机工具命令提示符,并在那里执行该命令

 if you get the opposite message:
 module machine type 'x86' conflicts with target machine type 'x64' 
 then you should open the VS2013 x64 Native Tools Command Prompt 
这两种工具都可以在文件夹下找到:

第二种方法

(可能仅适用于VS2013之前的版本)

由于您是从VisualStudioDeveloper命令提示符运行该命令,因此可以通过执行该命令查看正在运行的编译器

氯离子

此命令将返回以下行

Microsoft(R)C/C++优化编译器版本[编译器版本] [目标平台]

这将提供有关VS编译器版本和目标平台的信息

您可以通过运行以下命令来更改目标平台:

“C:\Program Files(x86)\Microsoft Visual Studio [VS版本]\VC\vcvarsall.bat[目标平台]”

在您的情况下,您将运行以下命令:

“C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat”


我遇到了类似的问题并解决了它

我猜这是由C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VCvcvarsall.bat的命令行配置引起的,我不知道您是否在'qmake''nmake'之前使用了命令'vcvarsall',但对我来说,这个项目(对我来说,它是qscintula)当我没有使用'vcvarsall'时,甚至无法构建

但是,由于“致命错误LNK1112:模块计算机类型‘x64’与目标计算机类型‘x86’冲突”,生成过程仍然没有成功,,我试图思考如何在命令行中更改目标计算机配置(因为与此类似的那些热点问题都是通过Visual Studio解决的)

幸运的是,我最终发现它与'vcvarsall'的参数配置有关,因为'vcvarsall'默认用于目标32位的生成。当我将'vcvarsall'更改为'vcvarsall amd64'时,它工作了


这里的更多细节:

可能的HI复制,该线程似乎只与在C++项目上使用VisualStudio有关。我试图在python项目上使用makefile进行编译。答案给出了VS的说明,但错误是相同的,所以我假设下面的解决方案是相同的。第二个答案包括一些可能相关的编译器标志的细节。如果它没有帮助(也没有给你关于在哪里寻找更多信息的线索),那么它就不是复制品。
 Compiler Version: XX.XX.XXXXX
 Target Platform: x64|x86
 VS Version: 10.0|11.0|12.0|... 
 Target Platform: x86|amd64|x64|arm|x86_arm|x86_amd64|amd64_x86|amd64_arm|amd64_x86
 *leaving the target platform empty will default to x86