3

NVCC が設定する _ITERATOR_DEBUG_LEVEL を知っている人はいますか?

VS2010 の Cmake プロジェクトで作業していて、プロジェクトをリンクしようとするとリンク エラーが発生します。

2>warper_cuda.lib(cudakernels.cu.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in ColorTable.obj

C++ ファイルの _ITERATOR_DEBUG_LEVEL を 0 に設定できますが、他のライブラリとリンクしなくなります。したがって、nvcc をレベル 2 でコンパイルする方法が必要です。

リリースモードですべてを使用すると機能するため、レベルが正しく設定されているようです。コンパイルに使用するコマンド ラインは次のようになります。

"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/bin/nvcc.exe" C:/path/to/cudakernels.cu -c -o "C:/path/to/cudakernels.cu.obj" -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" -m64 -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -Xcompiler ,\"/DWIN32\",\"/D_WINDOWS\",\"/W3\",\"/Zm1000\",\"/EHsc\",\"/GR\",\"/openmp\" -DNVCC -I -IC:/include/directory ...
4

1 に答える 1

6

ここで解決策を見つけました:http: //llpanorama.wordpress.com/2008/05/21/my-first-cuda-program/

_ITERATOR_DEBUG_LEVEL 2を使用するようにするには、NVCCコマンドラインに「-D_DEBUG」を追加する必要がありました。

于 2012-03-15T08:45:12.050 に答える