0

CUDA 5.0 と Arrayfire 1.9 をインストールしました。サンプル ファイルをコンパイルすると、完全に動作します。

独自のプロジェクトを別のフォルダーにセットアップしようとすると、af 名前空間に関連するものを使用しようとするとランタイム エラーが発生します。hello-world サンプル フォルダーを文字通り別の場所にコピーして、そこからコンパイルしようとすると、同じエラーが発生します。これは何かを示していますが、外部ライブラリを使用した経験がほとんどないため、何がわかりません。

エラーは次のとおりです。「アプリケーションを正しく開始できませんでした (0xc000007b)。[OK] をクリックしてアプリケーションを閉じます。

私のデバッグ出力は次のとおりです。

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 のメモリを使用。Intel i5 2410M デュアルコア CPU。(Asus 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で動作するようにします

最終更新: これを過去の自分に説明する必要がある場合 (したがって、この投稿は同じエラーを抱えている人にとって価値があります)、次のように言います: VS2010 のすべての構成手順の後 (または保存されません) -x64プラットフォームを選択できるようにVS2010 Pro を取得します(これは重要であり、おそらく最初のエラーの原因であり、2012 は正しく動作しません)。

4

1 に答える 1

2

あなたは正しいし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. プロジェクトのプロパティを開く
  2. Under "C/C++"underにとが含まれ"General"ていることを確認してください"Additional Include Directories""%CUDA_PATH%\include""%AF_PATH%\include"
  3. Under "Linker"underにとが含まれ"General"ていることを確認してください"Additional Library Directories""%CUDA_PATH%\lib\x64""%AF_PATH%\lib64"
  4. アンダーアンダー"Linker""Input""Additional Dependencies"含まれ"libaf.lib"ていることを確認してください。"libafGFX.lib"
于 2013-04-29T17:56:01.997 に答える