我使用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,但没有成功。请告诉我:什么是“模块机类型”,什么是“目标机类型”?我怎样才能克服它呢?
当前回答
我通过在Visual Studio 2013中将Win32更改为*64来解决这个问题。
其他回答
在VS2008中,当我试图将X64版本添加到VS2003转换的项目中时,我遇到了同样的问题。
我查看了在谷歌(目标机器,vc++目录,DUMPBIN....)上搜索此错误时发现的所有内容,一切看起来都OK。
最后,我创建了一个新的测试项目,并做了相同的更改,似乎可以工作。
在vcproj文件之间进行差异,发现了问题....
我的转换项目有/MACHINE:i386设置为附加选项设置下的链接器->命令行。因此,有两个/MACHINE选项设置(x64和i386),另外一个优先。
删除这个,并在链接器->高级->目标机下正确设置,使问题消失。
在Visual Studio 2013中,
1)检查项目属性页/配置属性/链接器/所有选项,并纠正所有未配置的机器和目录。
2)检查项目属性页/配置属性/链接器/输入,并纠正所有未配置的目录。
参见示例1)
对于那些使用QT Creator的人来说,问题也是一样的(正如@c-johnson所描述的那样)。 确保工具包中MSVC的编译器设置设置为x86,如下所示。
你可能有一个针对x64(这是模块机器类型)的. obj或. lib文件,而你链接的是x86(这是目标机器类型)。
在. obj文件上使用DUMPBIN /HEADERS,并在FILE HEADER VALUES块中检查机器条目。
我在构建QT时遇到了这个问题,我在某处读到的说明建议我使用VS命令提示符配置nmake。
我选择了x64命令提示符并轻松地执行了配置。当我尝试nmake时,它给出了这个错误。
我想有些组件是为32位系统预建的。这个错误甚至报告了哪些模块是为x86构建的。
我使用32位默认的VS命令提示符,它工作。