2012-02-24 77 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