我安裝了CUDA 5.0和Arrayfire 1.9,當我編譯示例文件時,它們完美地工作。Arrayfire故障:用代碼退出-1073741701
如果我嘗試在另一個文件夾中設置我自己的項目,當我嘗試使用與af命名空間相關的任何內容時,會出現運行時錯誤。如果我將hello-world示例文件夾複製到另一個位置並嘗試從那裏編譯,我會得到相同的錯誤。這表明了一些情況,但我不知道是什麼原因,因爲我沒有使用外部庫的經驗。
錯誤是: 「應用程序無法正確啓動(0xc000007b)。單擊確定關閉應用程序。」
我調試輸出是:
CODE: SELECT ALL
'DerdePoging.exe': Loaded 'C:\Users\######\Dropbox\Public\2D_CUDA_UNWRAPPER\Unwrapper_ArrayFire\DerdePoging\Debug\DerdePoging.exe', Symbols loaded.
'DerdePoging.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'DerdePoging.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'DerdePoging.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
The program '[5588] DerdePoging.exe: Native' has exited with code -1073741701 (0xc000007b).
我已經注意到,我的CUDA_LIB_PATH和CUDA_BIN_PATH和CUDA_INC_PATH變量是不存在的(即使我已經創建了使用CUDA功能齊全的應用程序),所以我創建的那些(指向我的Cuda安裝目錄中它們各自的文件夾)。這並沒有解決任何問題,並沒有真正期待它。
當前的環境變量:
AF_PATH=C:\Program Files\AccelerEyes\ArrayFire\1.9
CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin
CUDA_LIB_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib
CUDA_INC_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\
CUDA_PATH_V5_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\
那些前3可以使用\,當我添加了這些變量,所以我不認爲它很重要,雖然沒有什麼變化。
我想我在創建我的VS2010項目時缺少一些關鍵步驟。 StackOverflow告訴我這可能是一個缺少運行時.dll。 所以這裏最重要的是這些例子工作正常,但是在不同的地點,他們沒有。我認爲將其縮小到一些包含相對而非絕對定義的包含路徑。
不知道是否是相關的,但我會在這裏反正張貼:
使用的NVIDIA GeForce 540M 1GB內存。英特爾i5 2410M雙核CPU。 (華碩k53sv)
在此先感謝。
更新:
以下這些具體步驟提供了以下錯誤:
1>Release\main.obj : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
更新:
我會盡力讓它在VS2010專業版,其中包含一個64位的構建工作配置
最終更新: 好吧,如果我不得不解釋我的過去的自我(所以這篇文章有一些價值的人誰擁有了同樣的錯誤),我會這樣說: -hardcode的包括的東西,因爲環境變量行事怪異 -push VS2010中的每一個配置步驟之後應用(或他們不會被保存) -get VS2010臨所以你可以選擇x64平臺(這是關鍵的,可能導致第一個錯誤2012不能正常工作)
異常代碼0xc000007b是STATUS_INVALID_IMAGE_FORMAT。您正試圖加載一個包含無法在您的進程中執行的代碼的DLL。通常從嘗試在32位進程中加載64位DLL。或者相反。如果您不知道該DLL可能是什麼,那麼SysInternals的ProcMon可以向您展示。 – 2013-04-29 18:08:52
請注意,我位於64位機器上,但是我構建的是帶有x64 DLL的Win32平臺,這可能也會導致問題。 – 2013-05-01 18:20:11