Arrayfire故障:以代码-1073741701退出



我安装了CUDA 5.0和Arrayfire 1.9,当我编译示例文件时,它们工作得很好。

如果我尝试在不同的文件夹中设置我自己的项目,当我尝试使用与af命名空间相关的任何东西时,我会得到一个运行时错误。如果我将hello-world示例文件夹复制到另一个位置并尝试从那里编译它,我会得到相同的错误。这表明了一些事情,但我不知道是什么,因为我几乎没有使用外部库的经验。

错误是:"应用程序无法正确启动(0xc000007b)。单击OK关闭应用程序。"

我的调试输出是:

CODE: SELECT ALL
'DerdePoging.exe': Loaded 'C:Users######DropboxPublic2D_CUDA_UNWRAPPERUnwrapper_ArrayFireDerdePogingDebugDerdePoging.exe', Symbols loaded.
'DerdePoging.exe': Loaded 'C:WindowsSysWOW64ntdll.dll', Cannot find or open the PDB file
'DerdePoging.exe': Loaded 'C:WindowsSysWOW64kernel32.dll', Cannot find or open the PDB file
'DerdePoging.exe': Loaded 'C:WindowsSysWOW64KernelBase.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 FilesAccelerEyesArrayFire1.9
CUDA_BIN_PATH=C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0bin
CUDA_LIB_PATH=C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0lib
CUDA_INC_PATH=C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0include
CUDA_PATH=C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0
CUDA_PATH_V5_0=C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0

前3个可以使用,虽然当我添加这些变量时没有改变,所以我认为这无关紧要。

我想我错过了一些关键的步骤,当我创建我的VS2010项目。StackOverflow告诉我这可能是一个丢失的运行时。dll。所以这里最重要的是,这些例子工作得很好,但在不同的位置,它们就不行了。我认为这将范围缩小到一些定义为相对而不是绝对的包含路径

不确定是否相关,但我还是把它贴在这里:

使用1GB内存的NVIDIA geForce 540M。Intel i5 2410M双核CPU。(华硕k53sv)

提前感谢。

更新:

按照这些步骤执行会产生以下错误:

1>Releasemain.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专业版中工作,它包含一个x64构建配置

最后更新:好吧,如果我必须向过去的自己解释这一点(所以这篇文章对那些有同样错误的人有一些价值),我会这样说:硬编码包含的东西,因为环境变量的行为很奇怪-push在VS2010的每一个配置步骤后应用(否则它们不会被保存)-获取VS2010 Pro ,这样你就可以选择x64平台(这是关键的,可能导致第一个错误,2012不能正常工作)

你是对的,CUDA_LIB_PATHCUDA_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构建:

    打开项目属性
  1. "C/C++""General"下确保"Additional Include Directories"包含"%CUDA_PATH%include""%AF_PATH%include"
  2. "Linker""General"下确保"Additional Library Directories"包含"%CUDA_PATH%libx64""%AF_PATH%lib64"
  3. "Linker""Input"下也确保"Additional Dependencies"包含"libaf.lib""libafGFX.lib"

相关内容

  • 没有找到相关文章

最新更新