我使用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,但没有成功。请告诉我:什么是“模块机类型”,什么是“目标机类型”?我怎样才能克服它呢?
当前回答
对于那些使用QT Creator的人来说,问题也是一样的(正如@c-johnson所描述的那样)。 确保工具包中MSVC的编译器设置设置为x86,如下所示。
其他回答
当我将我的VS2008解决方案转换为VS2010并将win32配置更改为X64时,这种情况发生在我身上,在我的旧解决方案中我有mfcs90d。lib(配置->连接器->输入->附加依赖项),因为我正在使用VS010,我刚刚在VS2010文件夹中检查了它是mfcs100d。所以我改变了mfcs90d。Lib到mfcs100d。lib(配置->链接器->输入->附加依赖项)它工作得很好。
由于问题是由于编译和目标机器规格(x86 & x64)的差异造成的 遵循以下步骤:
打开要配置的c++项目。 选择“配置管理器”按钮,打开“配置管理器”对话框。 在“主用解决方案平台”下拉列表中,选择相应的选项,打开“新建解决方案平台”对话框。 在“类型或选择新平台”下拉列表中选择64位平台。
它解决了我的问题。
今天我就遇到了这种情况,因为我在x86模式下添加了一个库目录,并意外地删除了继承的目录,使它们变成了硬编码。 然后切换到x64后,我的vc++目录仍然读:
“... (VC_LibraryPath_x86美元);(WindowsSDK_LibraryPath_x86美元);”
而不是_x64。
模块机类型是您正在编译的机器,目标机类型是您正在为其构建二进制文件的x86或x64架构。
如果您的解决方案有库项目,请检查属性->图书管理员->通用中的目标机器属性