🐷

[環境構築]OpenCVのビルドにて、デフォルト設定だと、cv::cvtColor()とcv::imshow()でリンクエラーになるばい。

2024/01/21に公開

Abstract

題名のまんまやけど、OpenCVをソースコードからビルド(参考)したら、cv::cvtColor()と、cv::imshow()でリンクエラーが発生した。
解決方法がやっとわかったけん、そのまとめ。
結論から言うと、cmakeにフラグ追加して、cmake実行しなおすと直った。

opencvのバージョン
$ opencv_version
4.9.0
LNK2019 リンクエラー
[build] main.obj : error LNK2019: ?????????? "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::debug_build_guard::_InputArray const &)" (?imshow@cv@@YAXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV_InputArray@debug_build_guard@1@@Z) ??? _main ???????? [C:\dev\bbb2nd\build\OpenCVExample.vcxproj]
[build] main.obj : error LNK2019: ?????????? "void __cdecl cv::cvtColor(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,int,int)" (?cvtColor@cv@@YAXABV_InputArray@debug_build_guard@1@ABV_OutputArray@31@HH@Z) ??? _main ???????? [C:\dev\bbb2nd\build\OpenCVExample.vcxproj]
[build] C:\dev\bbb2nd\build\Debug\OpenCVExample.exe : fatal error LNK1120: 2 ?????????? [C:\dev\bbb2nd\build\OpenCVExample.vcxproj]
[proc] コマンド "C:\Program Files\CMake\bin\cmake.EXE" --build c:/dev/bbb2nd/build --config Debug --target ALL_BUILD -j 10 -- はコード 1 で終了しました
[driver] ビルド完了: 00:00:02.478
[build] ビルドが終了コード 1 で終了しました
[main] "undefined" という名前の実行可能ファイルのターゲットを準備できませんでした

前提

  • ここの手順でいろいろ済ませておく。

  • 7-zipもインストールしとく。

  • 手順

0.元のOpenCVライブラリを削除する。

C:\dev\opencv49\opencv-4.x\buildをフォルダごと削除。
環境変数に設定しているならそれも削除

1.CMake GUI起動

cmakeで、OpenCVのConfigure実行する前に。
File -> Delete Cache

     ↓
Configure押下

     ↓

     ↓
Add Entry押下

     ↓

2.HIGHGUI_ENABLE_PLUGINSとHIGHGUI_PLUGIN_LISTを追加

参考 : OpenCV configuration options reference
ついでに、OPENCV_EXTRA_MODULES_PATHも設定しとく。
OPENCV_EXTRA_MODULES_PATH : D:\apps\opencv\opencv_contrib-4.x\modules
HIGHGUI_ENABLE_PLUGINS : ON
HIGHGUI_PLUGIN_LIST : gtk2


     ↓

3.Configure押下


     ↓
Configure done

4.Generate押下


     ↓
Generate done

     ↓
後は、こっちの手順に戻って、実行すれば、
     ↓

出来た!!

Discussion