我安装了 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 ==========
更新:
我会尝试让它在包含 x64 构建配置的 VS2010 Professional 中工作
最终更新:好的,所以如果我必须向过去的自己解释这一点(所以这篇文章对有同样错误的人有一些价值)我会这样说:-硬编码包含的东西,因为环境变量的行为很奇怪 -push apply在 VS2010 中的每一个配置步骤之后(或者它们不会被保存)-get VS2010 Pro所以你可以选择 x64 平台(这很关键,可能导致第一个错误,2012 不能正常工作)