我安装了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