2016-07-24 36 views
1

プログラムとバージョンでのOpenCV 3.1の共有ビルドを作成中:: redirectError:GCC 6.1.0を使用してWindows 10、MINGW32、cmakeの3.6.1(コード::ブロック16.01)未定義参照Mingwを

まず、静的ビルドの構築は完全に機能しますが、共有ビルドを構築するだけでは機能しません。具体的な問題の回避策は見つけられません。

上記のプログラムを共有ビルドとしてOpenCV3.1をビルドしようとしました。 BUILD_TBB =オフ、BUILD_WITH_DYNAMIC_IPP =オフ、BUILD_opencv_world =オフ、ENALBE_OMIT_FRAME_POINTER =上、ENABLE_SSE/SSE2/SSE3 =:私の場合の手段(とりわけ)で

[ 34%] Linking CXX executable ..\..\bin\opencv_test_core.exe 
../../lib/libopencv_ts310.a(ts.cpp.obj):ts.cpp:(.text$_ZN6cvtest2TS4initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x119): undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)' 
collect2.exe: error: ld returned 1 exit status 
modules\core\CMakeFiles\opencv_test_core.dir\build.make:885: recipe for target 'bin/opencv_test_core.exe' failed 
mingw32-make[2]: *** [bin/opencv_test_core.exe] Error 1 
CMakeFiles\Makefile2:1713: recipe for target 'modules/core/CMakeFiles/opencv_test_core.dir/all' failed 
mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_test_core.dir/all] Error 2 
Makefile:159: recipe for target 'all' failed 
mingw32-make: *** [all] Error 2 

デフォルト設定:cmakeののデフォルト設定を使用して、私は次のエラーを取得しますon、WITH_IPP、WITH_IPP_A = off(これは、いくつかのケースで共通の問題を引き起こすように思われます)。

問題は次のとおりです。そのエラーの意味とその修正方法を教えてください。

明らかに、一部の機能がありません:undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)。ソースコードを検索すること

  1. system.cppに、この機能のいくつかの定義を与える:ライン662:redirectError(CvErrorCallback errCallback, void* userdata, void** prevUserdata)
  2. utility.hpp:ライン174:CV_EXPORTS ErrorCallback redirectError(ErrorCallback errCallback, void* userdata=0, void** prevUserdata=0);

しかし、未定義の参照は、いくつかのパラメータとしてchar型のポインタをint型望んでいますしかし、私はどのようなソースファイルでもそのような機能を見つけることはできません。私がやりなさい

[ 95%] Linking CXX shared library ..\..\bin\libopencv_calib3d310.dll 
CMakeFiles\opencv_calib3d.dir/objects.a(calibinit.cpp.obj):calibinit.cpp:(.text$_ZN2cv15findCirclesGridERKNS_11_InputArrayENS_5Size_IiEERKNS_12_OutputArrayEiRKNS_3PtrINS_9Feature2DEEE+0x426): undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)' 
CMakeFiles\opencv_calib3d.dir/objects.a(calibinit.cpp.obj):calibinit.cpp:(.text$_ZN2cv15findCirclesGridERKNS_11_InputArrayENS_5Size_IiEERKNS_12_OutputArrayEiRKNS_3PtrINS_9Feature2DEEE+0x44d): undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)' 
collect2.exe: error: ld returned 1 exit status 
modules\calib3d\CMakeFiles\opencv_calib3d.dir\build.make:787: recipe for target 'bin/libopencv_calib3d310.dll' failed 
mingw32-make[2]: *** [bin/libopencv_calib3d310.dll] Error 1 
CMakeFiles\Makefile2:3634: recipe for target 'modules/calib3d/CMakeFiles/opencv_calib3d.dir/all' failed 
mingw32-make[1]: *** [modules/calib3d/CMakeFiles/opencv_calib3d.dir/all] Error 2 
Makefile:159: recipe for target 'all' failed 
mingw32-make: *** [all] Error 2 

任意のバグレポートや何か他のものを見つけました:(どこかに示唆したように)これで問題が解決しないBUILD_EXAMPLES/PERF_TESTS /テストを不活性化するが、後に同じ問題を与えることは

このエラーに関して。

答えて

2

同じ問題が発生しました。それはthis patch

+0

"calibinit.cpp"を同じように(2回)変更する必要がありましたが、エラーなしでコンパイルしました。ありがとうございました! – Phann

1

前にあったように私は私が引数の両方にErrorCallbackの代わりCvErrorCallbackを使用するコア/ SRC/system.cppでredirectError()実装の署名を変更されたのは何ts.cppにcvRedirectErrorcv::redirectErrorを交換すると、それを解決してきました戻り値の型を宣言の署名と一致させます。どちらのtypedefも同じように見えるので、それがなぜ重要かは分かりません。それにもかかわらず助けた。