这个问题的对立问题就是“
模块计算机类型“X64”与目标计算机类型“X86”冲突
”,这个问题的解决方法文章后面再说
这两个问题看起来很像,解决方法却大相径庭,很多博客都把两者混淆,解决不了问题
首先来看题目中这个问题出现的原因,模块计算机类型“X86”是指计算机当前调用的库(lib或dll文件)的位数是32位,目标计算机类型“X64”是指当前的编译平台环境为64位,两者不相符,故冲突
模块计算机类型“X86”与目标计算机类型“X64”冲突的解决方法
这个问题一般出现在想生成64位解决方案时,因为平台选的64位,很明显是想得到64位解决方案。网上很多博主给出的解决方案是调整VS平台环境为64位,我看到时的内心就是:???excuse me?? ,因为报错已经说了目标计算机类型“X64”,很明显平台是64位的没有问题,不用调整,除非想生成的是32位解决方案,可以改为win32环境。
平台没有问题,剩下就是模块计算机类型“X86”的问题,如果在VS上运行,可以具体看下报错的文件名字,比如我在构建Halide时报错,出错的文件是“llvmObject.lib”文件,就是这个文件是32位的,llvm我是在cmd编译源码安装的,所以就是我在编译llvm时系统默认生成的是32位库文件,导致在llvm基础上编译Halide时报错。
找到原因,就可以对症解决了,重新编译llvm生成64位库文件,cmd中,如果用
cmake -G "Visual Studio 14 Win64"
编译时,认真看的话,会发现编译最开始有句话提示,大概意思就是“由于未选择64位还是32位,系统将默认编译32位,如果想编译64位请在cmd 命令行中添加 -Thost=x64”,按照这个提示,这次用下面这句编译
cmake -Thost=x64 -G "Visual Studio 14 Win64"
可以看到这次调用就是amd64文件夹内的内容,生成64位库文件,问题就得到解决!
模块计算机类型“X64”与目标计算机类型“X86”冲突的解决方法
这个问题,相对容易解决,库没有问题,把平台改为x64就好,这个解决方案网上很多大概就是:
1、
“链接器-》高级-》目标计算机”设置为"MachineX64 (/MACHINE:X64)"
2、
“链接器-》命令行-》其他选项”设置为" /machine:X64 /debug "
3、
“生成-》配置管理器-》活动解决方案平台”设置为" X64 ",如果没有就新建。
这个问题的对立问题就是“模块计算机类型“X64”与目标计算机类型“X86”冲突”,这个问题的解决方法文章后面再说这两个问题看起来很像,解决方法却大相径庭,很多博客都把两者混淆,解决不了问题原因分析首先来看题目中这个问题出现的原因,模块计算机类型“X86”是指计算机当前调用的库(lib或dll文件)的位数是32位,目标计算机类型“X64”是指当前的编译平台环境为64位,两者不相符,故冲突模块计算机类...
编译qt项目提示“
模块
计算机
类型
“
x64
”与
目标
计算机
类型
“
X86
”
冲突
。
问题出现场景:
vs2013+qt5.7.1,修改qt由msvc2013到msvc2013_64后,编译之前的qt项目提示“
模块
计算机
类型
“
x64
”与
目标
计算机
类型
“
X86
”
冲突
。
问题解决措施:
因为修改了msvc2013到msvc2013_64,所以需要修改项目的配置:
解决方法参考:https://blog.csdn.net/u014805066/article/details/78143091,亲测有效
1、“链接器
win10下,vs2013&opencv2.4.13调试项目,debug win32平台下正常运行,debug
x64
下报错:
error LNK1112:
模块
计算机
类型
“
X86
”与
目标
计算机
类型
“
x64
”
冲突
。
其他项目win32和
x64
下调试都能正常运行,说明系统已经安装VS下
X64
编译能力,于是检查项目属性发现
原因
如下:
在使用优化库的过程中,因为要配置优化库所以需要链接库,但是配置完成后一直显示
计算机
类型
“
X86
”与
目标
计算机
类型
“
X64
”
冲突
的问题,搜集了很多解决办法最后终于找到问题了,所以总结一下避免后面的人踩坑。
首先,讲一下我自己的
原因
。主要是因为选择错了目录的
类型
了。
如图所示,我把
X64
的不知道怎么了,电脑默认成
X86
了,所以一直没有找到问题,改一下这个地方就行了。还有上面的配置平台也不能选错了。
X86
对应的咱们说的Win32位的平台。
X64
对应咱们的
X64
平台。
下面介绍一下网上比较好的解决办法:
目标
计算机
类型
是
X64
,但是用vcpkg安装的库是
X86
类型
的,所以运行时会出现问题。
一开始使用vcpkg安装库时,直接按照网上的命令.\vcpkg install opengl来安装,这样默认就是安装
X86
架构的,所以需要将原来安装的库移除,并使用
.\vcpkg install opengl:
x64
-windows来指定库的架构。
遇到bug不能只是盲目照搬博客上的
解决方案
。一方面是因为别人遇到的问题和你并不一样,盲目照搬别人的解决方法可能会越改越乱;另一方面,遇到bug要在
我想编译64位的程序,于是选择了debug +
x64
的编译环境。
我报的错误是:msvcprtd.lib(MSVCP110D.dll) : fatal error LNK1112:
模块
计算机
类型
“
X86
”与
目标
计算机
类型
“
X64
”
冲突
。
上网查找了许多博客网站,多数转载以下这篇博客和百度经验。
http://jingyan.baidu.com/article/3aed632e090ef87010809138.html
http://blog.csdn.net/qtbmp
好的进入正题吧,问题处理方法:工具> 选项>构建和运行>构建套件(Kit)
刚安装的时候没有选择编译器就会在项目的构建设置界面看到make显示没有编译工具,如果选了编译工具但是选错了,编译的时候就会出现:
模块
计算机
类型
“
x64
”与
目标
计算机
类型
“
X86
”
冲突
的问题,所以要选好,改了后记得要点:构建>重新构建所有项目。
在VS2013+Boost编程时,经常遇到"
模块
计算机
类型
X86
与
目标
计算机
类型
X64
冲突
"的问题,出现该
原因
是当前工程是
x86
类型
即32位,而自己要生成的exe或dll是64位,位数不匹配,所以报错。
解决方法:将工程
类型
的位数与自己引用的dll或lib位数保持一致。
QT 中使用 QSysInfo 类来判断系统是 Windows
x86
还是 Windows
x64
。
可以调用 QSysInfo::currentCpuArchitecture() 方法来获取系统的 CPU 架构,该方法返回的值可能是 "
x86
" 或 "
x86
_64"。
举个例子:
if (QSysInfo::currentCpuArchitecture() == "
x86
") {
// do something for Windows
x86
} else if (QSysInfo::currentCpuArchitecture() == "
x86
_64") {
// do something for Windows
x64