我安装了CUDA 5.0和Arrayfire 1.9,当我编译示例文件时,它们运行良好。
如果我尝试在不同的文件夹中设置我自己的项目,当我尝试使用与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。 因此,这里的关键重点是示例工作正常,但在不同的位置,它们没有。我认为这会将其缩小到一些包含相对而非绝对定义的路径。
不确定它是否相关,但无论如何我都会在这里发布:
使用配备1GB内存的NVIDIA geForce 540M。 Intel 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 Professional中使用它,它包含x64构建配置
最后更新: 好的,如果我不得不向我的过去自己解释这个(所以这篇文章对那些有相同错误的人有一些价值)我会这样说: -hardcode包含东西,因为环境变量很奇怪 -shush在VS2010中的每个配置步骤后应用(或者不保存) -get VS2010 Pro 所以你可以选择x64平台(这很关键,可能是第一次出错,2012年无法正常工作)
答案 0 :(得分:2)
你对CUDA_LIB_PATH
和CUDA_INC_PATH
无关紧要(因为CUDA 5.0)。 AccelerEyes已经更新了ArrayFire库的更新版本,但是如果你有一个较旧的版本,那么你的Visual Studio项目可能仍然依赖于旧的(CUDA_X_PATH)路径而不是新的路径。由于示例运行正常,我认为您的问题只是您没有在Visual Studio项目中指定所有依赖项...
首先,我建议确保ArrayFire .dll位于您的系统路径中:
设置环境变量PATH="%PATH%;%AF_PATH%\lib64"
(假设你在64位机器上。这允许你的运行时找到ArrayFire dll。
现在修复Visual Studio构建:
"C/C++"
下的"General"
下,确保"Additional Include Directories"
包含"%CUDA_PATH%\include"
和"%AF_PATH%\include"
"Linker"
下的"General"
下,确保"Additional Library Directories"
包含"%CUDA_PATH%\lib\x64"
和"%AF_PATH%\lib64"
"Linker"
下的"Input"
下,还要确保"Additional Dependencies"
包含"libaf.lib"
,可能"libafGFX.lib"