2012-02-24 83 views
1

我试图编译在通过命令的Windows 7 X64的一个CUDA测试程序提示使用这个命令:链接错误,同时从命令提示符编译CUDA

nvcc cuda.cu 

我得到以下输出,然后此错误信息:

cuda.cu 
tmpxft_00000d14_00000000-3_cuda.cudafe1.gpu 
tmpxft_00000d14_00000000-8_cuda.cudafe2.gpu 
cuda.cu 
tmpxft_00000d14_00000000-3_cuda.cudafe1.cpp 
tmpxft_00000d14_00000000-14_cuda.ii 
LINK : fatal error LNK1104: cannot open file 'kernel32.lib' 

我在C kernel.lib文件:\程序文件(x86)\微软的SDK \的Windows \ v7.0A \ Lib文件,并补充说,到CUDA LIB环境变量不起作用。

什么会导致此错误,我该如何纠正它?

+0

尝试添加“-machine 32”作为参数 – nouveau 2012-02-25 07:08:01

+0

试过了@Jay它说 nvcc致命:'achine':期待一个数字。 然后尝试“--machine 32”仍然给出, LINK:致命错误LNK1104:无法打开文件'kernel32.lib' – TheGame 2012-02-25 11:10:11

+0

因为您在64位操作系统上,-m64如何? – harrism 2012-02-25 12:22:31

回答

2

您不应在环境变量中指定MS lib位置。你需要使用一个“-L”命令行选项,如

nvcc <file> -L"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib" 

真的是你可能需要安装Visual Studio,因为你需要一台主机编译器来构建你的主机代码。

+0

Ohk。我安装了Visual Studio Express Edition。从命令行运行时,会出现很多错误!这里有几个人.. LIBCMT.LIB(commit.obj):错误LNK2001:解析外部符号__imp_GetLastError LIBCMT.LIB(lseeki64.obj):错误LNK2019:解析外部符号__imp_GetLastError在功能_lseeki64_nolock LIBCMT.LIB引用(close.obj):错误LNK 2001:解析外部符号__imp_GetLastError LIBCMT.LIB(osfinfo.obj):错误LNK 2001:解析外部符号__imp_GetLastError A.EXE:致命错误LNK1120:76层解析的外部 – TheGame 2012-02-27 07:53:14

+0

我刚安装Visual Studio 10.0 Express和Windows SDK 7.1,我没有得到你得到的错误。但是,我无法将其编译为64位(使用64位CUDA工具包的默认编译器)。我确实通过添加'--machine 32'来编译没有错误。要编译没有这个选项,我必须安装Visual Studio 10.0专业版。 – harrism 2012-02-28 07:06:27

+0

谢谢你解决了我的问题。我现在已经转移到MacOSX并能够使用nvcc编译和运行代码。 – TheGame 2012-11-18 19:24:50