質問: "dst"; Mat src, dst; gpu::GpuMat gpuSrc, gpuDst; namedWindow(wName, CV_WINDOW_AUTOSIZE); while (true) { capture >> src; if (src.empty()) break; gpuSrc.upload(src); gpu::cvtColor(gpuSrc, gpuDst, COLOR_RGB2GRAY); gpuDst.download(dst); imshow(wName, dst); if (waitKey(wait) >= 0) break; } } catch (const char* str) { std::cout << str << std::endl; } catch (const cv::Exception* ex) { std::cout << "Error: " << ex->what() << std::endl; } return 0; } ``` ヘッダファイルは特有のものなのでこちらに載せます。 ``` //-------------------------------------------------------------------------- #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"opencv_calib3d246d.lib") #pragma comment(lib,"opencv_core246d.lib") #pragma comment(lib,"opencv_contrib246d.lib") #pragma comment(lib,"opencv_features2d246d.lib") #pragma comment(lib,"opencv_flann246d.lib") #pragma comment(lib,"opencv_gpu246d.lib") #pragma comment(lib,"opencv_haartraining_engined.lib") #pragma comment(lib,"opencv_highgui246d.lib") #pragma comment(lib,"opencv_imgproc246d.lib") #pragma comment(lib,"opencv_legacy246d.lib") #pragma comment(lib,"opencv_ml246d.lib") #pragma comment(lib,"opencv_objdetect246d.lib") #pragma comment(lib,"opencv_ts246d.lib") #pragma comment(lib,"opencv_video246d.lib") #else //Releaseモードの場合 #pragma comment(lib,"opencv_calib3d246.lib") #pragma comment(lib,"opencv_core246.lib") #pragma comment(lib,"opencv_contrib246.lib") #pragma comment(lib,"opencv_features2d246.lib") #pragma comment(lib,"opencv_flann246.lib") #pragma comment(lib,"opencv_gpu246.lib") #pragma comment(lib,"opencv_haartraining_engine.lib") #pragma comment(lib,"opencv_highgui246.lib") #pragma comment(lib,"opencv_imgproc246.lib") #pragma comment(lib,"opencv_legacy246.lib") #pragma comment(lib,"opencv_ml246.lib") #pragma comment(lib,"opencv_objdetect246.lib") #pragma comment(lib,"opencv_ts246.lib") #pragma comment(lib,"opencv_video246.lib") #endif ``` こちらがエラーになります。 ``` GPUGPU.cu C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin/../include\cuda_runtime.h: warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してくださ い。 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin/../include\w32api.h(186): warning C4005: '_EXTERN_C': マクロが再定義されました。 C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/../../VC/INCLUDE\yvals.h(560): note: '_EXTERN_C' の以前の定義を確認してください c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\cuda_runtime_api.h(1950): warning C4819: ファイルは、現 在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してく ださい。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\cuda_runtime_api.h(1950): warning C4819: ファイルは、現 在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してく ださい。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h: warning C4819: ファイルは、現在の コード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してくださ い。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(838): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してく ださい。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(1772): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(2628): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(3477): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(4417): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(5319): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(6229): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(7104): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\math_functions.h(7914): warning C4819: ファイルは、 現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt/device_functions.h: warning C4819: ファイルは、現在 のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してくだ さい。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt/device_functions.h(776): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存して ください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt/device_functions.h(1636): warning C4819: ファイルは 、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存し てください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt\device_double_functions.h: warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存し てください。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\sm_20_intrinsics.h: warning C4819: ファイルは、現在のコ ード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください 。 c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\sm_20_intrinsics.h(925): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してくだ さい。 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin/../include\float.h(57): fatal error C1021: プリプロセッサ コマンド 'include_next' が無効です。 ``` ヘッダファイルはちゃんと読み込めているはずなのにエラーが出る理由がいまいちわかりません。 なぜこのようなエラーが出るのでしょうか? どうか解決のためにお力を貸していただけないでしょうか?
回答: ヘッダファイル含め、ソースコードの記述にはどんなソフトを使用されていますか?さすがにメモ帳ということはないと思いますが、作成したヘッダファイル(*.h)の文字コードが932(Shift-JIS)で保存されているためコンパイルエラーになっているようです。 文字コードを指定して保存出来るエディタを使用して、ヘッダファイルやソースコードをUnicode(UTF-8)で保存し直してみてください。 参考: Windows向けのテキストエディタ(窓の杜) Notepad++でファイルの文字コードを変更する