我使用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)中有一些元素,尽管它是另一种类型(比如x86)的目标。
您可以通过查看哪个obj文件导致崩溃来分析问题的根源,并开始在那里寻找问题。每个obj将有一个源代码模拟:要么在cpp, c, asm等。可能有一些特殊的构建事件使用了错误的工具。在属性表中查看。
我会先看看那里,然后再看C·约翰逊的待办事项清单。
其他回答
除了Jhonson的列表,还可以查看图书馆的文件夹
在visual studio中,从主菜单中选择Tools > Options。选择项目和解决方案> vc++目录。从平台下拉菜单中选择x64。
$(VCInstallDir)lib\AMD64;
$(VCInstallDir)atlmfc\lib\amd64;
$(WindowsSdkDir)lib\x64;
如果您的项目设置为在项目属性->配置属性->常规中具有相同的中间目录,也可能发生此问题
我通过在Visual Studio 2013中将Win32更改为*64来解决这个问题。
今天我就遇到了这种情况,因为我在x86模式下添加了一个库目录,并意外地删除了继承的目录,使它们变成了硬编码。 然后切换到x64后,我的vc++目录仍然读:
“... (VC_LibraryPath_x86美元);(WindowsSDK_LibraryPath_x86美元);”
而不是_x64。
如果您的解决方案有库项目,请检查属性->图书管理员->通用中的目标机器属性