我正在使用CUDA (VC++,Visual studio 2008sp1)来调试一个有限元程序。由于cuda的不足,该程序只能在Win32平台上运行。我认为链接的库文件都是在x86平台上编译的,但是当我编译它时,我得到错误消息"fatal error LNK1112: module machine type 'x64‘conflicts with target machine type 'X86'“。
我曾尝试将该平台转换为x64,但它不起作用。请告诉我:什么是模块机类型,什么是目标机类型?我怎样才能克服它?
发布于 2012-01-13 16:28:23
当我试图将X64构建添加到从VS2003转换而来的项目中时,我在VS2008中遇到了同样的问题。
我查看了在谷歌上搜索这个错误时找到的所有东西(目标机器,VC++Directories,DUMPBIN....)一切看起来都很好。
最后,我创建了一个新的测试项目,并做了相同的更改,它似乎起作用了。
在vcproj文件之间进行比较发现了问题...
我转换后的项目在“链接器”->“命令行”下将/MACHINE:i386设置为附加选项。因此,设置了两个/MACHINE选项( x64和i386),另一个选项优先。
移除它并在Linker->Advanced->Target Machine下正确设置它会使问题消失。
发布于 2017-03-14 04:20:40
所有的项目设置似乎都很完美,但我还是得到了错误。查看.vcxproj
文件并搜索"x86“发现了问题:
<Lib>
<AdditionalOptions> /machine:X86 %(AdditionalOptions)</AdditionalOptions>
</Lib>
对所有匹配项的快速搜索/替换(十个单独的文件设置)修复了该问题。
发布于 2010-08-25 16:01:55
当您链接到x64 (这是目标机器类型)时,您可能有一个针对x86 (这是模块机类型)的.OBJ或.LIB文件。
对.OBJ文件使用DUMPBIN /HEADERS,并检查文件头值块中的machine条目。
https://stackoverflow.com/questions/3563756
复制相似问题