お世話になります。
OpenCVのCMakeビルドでまた詰まったことがありました。
ご教示頂きたく、宜しくお願いいたします。
###前提・実現したいこと
下記環境でx86ビルドとx64ビルドを両方できるようにしたいと考えています。
OS :Windows7 64bit
CMake :3.3.2
OpenCV:3.0
CUDA :7.5
開発環境:Visual Studio Community 2013
(OpenCVのソースやCUDA(SDK)にはx86,x64の区別が特に無いようでした。)
x64ビルドができるようには問題なくできましたが、x86ビルドができません。
OpenCV単体であればx86/x64ビルド共に問題なくできましたが、「WITH_CUDA」にチェックをするとうまくいかないようです。
###試したインストールの手順 その1
ます試したのは何も考えずにx86ビルド用なんだから、ということで32bitOS用のインストール方法を下記の手順で行いました。
1.OpenCVを公式ページからDLしてCドライブ直下へ保存
http://opencv.org/
2.CMake(cmake-gui.exe)でConfigure
Where is the sorce code -> C:/opencv/sources
Where to build the binaries -> C:/opencv/work
プルダウンリストから「Visual Studio 12 2013」を選択
ラジオボタンは「Use default native compilers」を選択
3.「Error in configuration process, project files may be invalid」のエラーダイアログ出現
(WITH_CUDAにチェックはついている)
ここでCMake-gui下部のメッセージ部には以下のような赤字のメッセージが大量に出ております。
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cufft_LIBRARY (ADVANCED)
linked by target "opencv_hal" in directory C:/opencv/sources/modules/hal
linked by target "opencv_cudev" in directory C:/opencv/sources/modules/cudev
linked by target "opencv_test_cudev" in directory C:/opencv/sources/modules/cudev/test
linked by target "opencv_perf_core" in directory C:/opencv/sources/modules/core
linked by target "opencv_core" in directory C:/opencv/sources/modules/core
linked by target "opencv_test_core" in directory C:/opencv/sources/modules/core
・・・(中略)・・・
linked by target "opencv_traincascade" in directory C:/opencv/sources/apps/traincascade
linked by target "opencv_createsamples" in directory C:/opencv/sources/apps/createsamples
linked by target "opencv_annotation" in directory C:/opencv/sources/apps/annotation
Configuring incomplete, errors occurred!
See also "C:/opencv/work/CMakeFiles/CMakeOutput.log".
See also "C:/opencv/work/CMakeFiles/CMakeError.log".
パッと見た様子では記載内容については特に問題があるようには見えませんでしたが、書いてある通りCMakeError.logを確認したところ下記の内容のエラーが出ておりました。(エラー内容のみ抜粋)
Determining if the system is big endian passed with the following output:
Change Dir: C:/opencv/work/CMakeFiles/CMakeTmp
Run Build Command:"C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe" "cmTC_6a9cc.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=12.0"
Microsoft (R) Build Engine バージョン 12.0.40629.0
[Microsoft .NET Framework、バージョン 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.
・・・(中略)・・・
CheckFunctionExists.obj : error LNK2019: 未解決の外部シンボル _fseeko が関数 _main で参照されました。 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_6f842.vcxproj]
C:\opencv\work\CMakeFiles\CMakeTmp\Debug\cmTC_6f842.exe : fatal error LNK1120: 1 件の未解決の外部参照 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_6f842.vcxproj]
0 個の警告
2 エラー
経過時間 00:00:00.39
・・・(中略)・・・
C:\opencv\work\CMakeFiles\CMakeTmp\CheckIncludeFile.c(1): fatal error C1083: include ファイルを開けません。'unistd.h':No such file or directory [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_dbc1c.vcxproj]
・・・(中略)・・・
C:\opencv\work\CMakeFiles\CheckTypeSize\OFF64_T.c(23): error C2065: 'off64_t' : 定義されていない識別子です。 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_1c786.vcxproj]
・・・(中略)・・・
CheckFunctionExists.obj : error LNK2019: 未解決の外部シンボル _jbg_newlen が関数 _main で参照されました。 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_93073.vcxproj]
C:\opencv\work\CMakeFiles\CMakeTmp\Debug\cmTC_93073.exe : fatal error LNK1120: 1 件の未解決の外部参照 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_93073.vcxproj]
・・・(中略)・・・
CheckFunctionExists.obj : error LNK2019: 未解決の外部シンボル _mmap が関数 _main で参照されました。 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_3c324.vcxproj]
C:\opencv\work\CMakeFiles\CMakeTmp\Debug\cmTC_3c324.exe : fatal error LNK1120: 1 件の未解決の外部参照 [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_3c324.vcxproj]
・・・(中略)・・・
C:\opencv\work\CMakeFiles\CMakeTmp\CheckIncludeFile.c(1): fatal error C1083: include ファイルを開けません。'unistd.h':No such file or directory [C:\opencv\work\CMakeFiles\CMakeTmp\cmTC_74963.vcxproj]
0 個の警告
1 エラー
経過時間 00:00:00.22
・「unistd.h」というファイルは確かに書いてあるディレクトリにはありませんが、MATLAB関連のファイルらしく勝手に動かしてもよいのかわかっておりません。
・「off64_t」が定義されてないのは64bitOSなのに32bitOSと同じ手順でビルド仕様としたからかもしれませんが、「WITH_CUDA」にチェックをしなければエラーが出ないのは納得いきません。
・「_jbg_newlen」や「_mmap」が未解決になっているのは何かこちらでパスを指定しなければならないのかもしれませんが心当たりがありません。
エラー内容を見てもいまいち解決までのめどが立ちそうになかったため、次の方法を試しました。
###試したインストールの手順 その2
64bitOSを使っているんだから、ということで今度は以下の手順を試しました。
1.OpenCVを公式ページからDLしてCドライブ直下へ保存
http://opencv.org/
2.CMake(cmake-gui.exe)でConfigure
Where is the sorce code -> C:/opencv/sources
Where to build the binaries -> C:/opencv/work
プルダウンリストから「Visual Studio 12 2013 Win64」を選択
ラジオボタンは「Use default native compilers」を選択
3.WITH_CUDAにチェックがついているのを確認して再度Configure
(ほかの赤くハイライトされたところはそのまま)
4.赤いハイライトがなくなったのを確認してGenerate
5.OpenCV.slnを開く
6.メニューバーの「ビルド→構成マネージャ」を開く
7.アクティブソリューションプラットフォームから「新規作成」を選ぶ
8.Win32を選んで(設定のコピー元はx64)OKを押した後、構成マネージャを閉じる
9.メニューバーの「ビルド→バッチビルド」を開く
10.「ALL_BUILD」と「INSTALL」のプロジェクトのうち、プラットフォームがWin32になっているものにチェックをつけてビルド開始
ところが残念なことにエラーが大量に出ました。
エラー 1 error LNK1104: ファイル '....\lib\Debug\opencv_hal300d.lib' を開くことができません。 C:\opencv\work\modules\cudev\LINK opencv_cudev
エラー 433 error LNK1104: ファイル '....\lib\Debug\opencv_hal300d.lib' を開くことができません。 C:\opencv\work\modules\core\LINK opencv_core
エラー 434 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5 IlmImf
エラー 435 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5 libjasper
エラー 436 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5 libjpeg
エラー 437 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5 libpng
・・・(中略)・・・
エラー 518 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5 opencv_test_cudaoptflow
エラー 519 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5 ALL_BUILD
エラー 520 error MSB8013: このプロジェクトには、Debug|Win32 の構成とプラットフォームの組み合わせが含まれていません。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 61 5
CMakeで「Visual Studio 12 2013 Win64」を指定したからうまくいかないのかも知れないとは思いましたが、確信が持てません。
上記の2つの方法を試しましたがうまくいきませんでした。
見当はずれなことをしている可能性は十分あるのですが、正しいビルド方法をご教示いただきたく、宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/18 04:54
2015/12/18 07:19 編集
2015/12/18 08:19
2015/12/18 14:34
2015/12/19 05:01