我使用CUDA (vc++, Visual studio 2008sp1)来调试FEM程序。由于cuda的不足,该程序只能在Win32平台上运行。我认为链接的库文件都是在x86平台上编译的,但是当我编译它时,我得到了错误消息
致命错误LNK1112:模块机类型“x64”与目标机类型“X86”冲突。
我曾尝试将该平台转换为x64,但没有成功。请告诉我:什么是“模块机类型”,什么是“目标机类型”?我怎样才能克服它呢?
我使用CUDA (vc++, Visual studio 2008sp1)来调试FEM程序。由于cuda的不足,该程序只能在Win32平台上运行。我认为链接的库文件都是在x86平台上编译的,但是当我编译它时,我得到了错误消息
致命错误LNK1112:模块机类型“x64”与目标机类型“X86”冲突。
我曾尝试将该平台转换为x64,但没有成功。请告诉我:什么是“模块机类型”,什么是“目标机类型”?我怎样才能克服它呢?
当前回答
在VS2008中,当我试图将X64版本添加到VS2003转换的项目中时,我遇到了同样的问题。
我查看了在谷歌(目标机器,vc++目录,DUMPBIN....)上搜索此错误时发现的所有内容,一切看起来都OK。
最后,我创建了一个新的测试项目,并做了相同的更改,似乎可以工作。
在vcproj文件之间进行差异,发现了问题....
我的转换项目有/MACHINE:i386设置为附加选项设置下的链接器->命令行。因此,有两个/MACHINE选项设置(x64和i386),另外一个优先。
删除这个,并在链接器->高级->目标机下正确设置,使问题消失。
其他回答
当我将我的VS2008解决方案转换为VS2010并将win32配置更改为X64时,这种情况发生在我身上,在我的旧解决方案中我有mfcs90d。lib(配置->连接器->输入->附加依赖项),因为我正在使用VS010,我刚刚在VS2010文件夹中检查了它是mfcs100d。所以我改变了mfcs90d。Lib到mfcs100d。lib(配置->链接器->输入->附加依赖项)它工作得很好。
所有的项目设置看起来都很完美,但我仍然得到了错误。查看.vcxproj文件并搜索“x86”就会发现问题:
<Lib>
<AdditionalOptions> /machine:X86 %(AdditionalOptions)</AdditionalOptions>
</Lib>
快速搜索/替换所有出现的情况(10个单独的文件设置)解决了这个问题。
如果您的项目设置为在项目属性->配置属性->常规中具有相同的中间目录,也可能发生此问题
模块机类型是您正在编译的机器,目标机类型是您正在为其构建二进制文件的x86或x64架构。
我的目标是一个x64 Windows 10文本模式的DOSBox应用程序在C语言。 使用“Visual Studio 2019 Community”通过DOS提示符“nmake -f makefile”进行编译。 错误是类似的,但在相反的方面:
fatal error LNK1112: module machine type 'x32' conflicts with target machine type 'X64'
在另一台计算机上用vc++ 2010编译是可以的。但是“Visual Studio 2019社区”在这台计算机上失败了。所以我的设置是正确的,以上所有答案都不工作。
我想和大家分享的解决方案是这样的make.bat:
call "c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
nmake -f makefile
你会发现还有很多其他的vcvarxxxx .bat,只有这一个词。