我正在尝试编译包含CUDA代码的应用程序。我有一台运行Windows 7的64位计算机,并拥有visual c ++ 2008 express版本(免费版)。为了能够使用cuda编译器,我遵循了here中的步骤。 cuda文件(扩展名为* .cu)现在编译正常,但其他正常的C ++文件使用32位,因为在IDE的顶部(配置管理器)的下拉框中,它显示Win32
,所以我得到这个错误。
fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
请注意,在IDE中,我正确地将链接器的目标机器设置为MachineX64
(属性 - >配置属性 - >链接器 - >高级 - >目标机器)。但是,查看命令行,就是这样的。
/OUT:"C:\Users\jan\Desktop\gpu\Release\gpu.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\CUDA\lib64" /LIBPATH:"../../common/lib" /MANIFEST /MANIFESTFILE:"Release\gpu.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\jan\Desktop\gpu\Release\gpu.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:PROMPT cudart.lib C:\CUDA\lib64\cudart.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
注意,32位版本的运行时库正在传递给命令行。我怎么能让怪异的编译器使用64位。这与配置管理器有关。人们告诉我转到configuration manager
并在new
下拉列表中选择active solution platform
,然后从那里选择x64。但是type or select new platform
下拉列表是空白的。请帮我。我为此疯狂。请注意,我在计算机中安装了所有64位编译工具,因为我安装了完整的Windows SDK。