我使用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 2012 +/-中,“配置属性”. linker的属性页。“命令行”包含一个标记为“附加选项”的框。如果您正在构建x64,请确保该方框不包含/MACHINE:I386。我的项目是这样做的,它产生了问题中的错误。
如果您的项目设置为在项目属性->配置属性->常规中具有相同的中间目录,也可能发生此问题
当我将我的VS2008解决方案转换为VS2010并将win32配置更改为X64时,这种情况发生在我身上,在我的旧解决方案中我有mfcs90d。lib(配置->连接器->输入->附加依赖项),因为我正在使用VS010,我刚刚在VS2010文件夹中检查了它是mfcs100d。所以我改变了mfcs90d。Lib到mfcs100d。lib(配置->链接器->输入->附加依赖项)它工作得很好。
vcxproj文件可能包含“MACHINE:i386” 用编辑器编辑vcxproj文件。把它拿掉!
"project property - CUDA Runtime API - GPU - NVCC Compilation Type"
设置64位编译选项-m64 -cubin
提示是在编译日志。 是这样的:
nvcc.exe ~~~~~~ -machine 32 -ccbin ~~~~~
“- 32号机器”是个问题。
第一个设置64位编译选项, 下一步重新设置混合编译选项。 然后你就能看到成功。