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 ...