我使用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,但没有成功。请告诉我:什么是“模块机类型”,什么是“目标机类型”?我怎样才能克服它呢?
当前回答
你可能有一个针对x64(这是模块机器类型)的. obj或. lib文件,而你链接的是x86(这是目标机器类型)。
在. obj文件上使用DUMPBIN /HEADERS,并在FILE HEADER VALUES块中检查机器条目。
其他回答
我正在使用CMake,然后添加了一个win32配置。属性页显示x86,但实际上在文本编辑器中打开vcxproj文件时,它是x64!手动切换到x86解决了这个问题。
所有的项目设置看起来都很完美,但我仍然得到了错误。查看.vcxproj文件并搜索“x86”就会发现问题:
<Lib>
<AdditionalOptions> /machine:X86 %(AdditionalOptions)</AdditionalOptions>
</Lib>
快速搜索/替换所有出现的情况(10个单独的文件设置)解决了这个问题。
我的目标是一个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,只有这一个词。
"project property - CUDA Runtime API - GPU - NVCC Compilation Type"
设置64位编译选项-m64 -cubin
提示是在编译日志。 是这样的:
nvcc.exe ~~~~~~ -machine 32 -ccbin ~~~~~
“- 32号机器”是个问题。
第一个设置64位编译选项, 下一步重新设置混合编译选项。 然后你就能看到成功。
首先尝试以下几点: 1. 进入配置管理器,并创建一个新的x64,如果它已经不在那里。 2. 选择x64解决方案。 3.进入项目属性,然后链接器->高级选择x64机器。 4. 现在重新构建解决方案。
如果你仍然得到相同的错误。尝试干净的解决方案,然后重新构建,再次打开visual studio,您将获得最近打开的项目列表,右键单击该项目并将其从那里删除。现在转到解决方案并再次重新打开解决方案。