Я пытаюсь статические ссылки на библиотеки OpenCV на Windows. Я уже построил библиотеку с BUILD_SHARED_LIBS
OFF
и я создал проект на Eclipse (кстати, использую MinGW). C:\opencv
устанавливается как мой источник, а C:\opencv\build\x86\mingw
задается как назначение в cmake-gui. Затем я выполнил mingw32-make и mingw32-make install на C:\opencv\build\x86\mingw
.
Мой вопрос в том, как статические ссылки на эти библиотеки на Eclipse, я пробовал несколько способов, но мое приложение OpenCV по-прежнему не работает на компьютерах без установленной OpenCV.
Вот что я пробовал до сих пор, я установил
C:\opencv\build\x86\mingw\install\include
в качестве папки include;
C:\opencv\build\x86\mingw\lib
как путь к библиотеке на "Linker", и у меня есть opencv_core246, opencv_highgui246, opencv_objdetect246 и opencv_imgproc246.
Таким образом, похоже, что он все еще использует "динамическое связывание", поэтому я попытался добавить -static в опцию Miscellaneous, но затем я получил эти ошибки:
C:\opencv\build\x86\mingw\lib\libopencv_imgproc246.a(templmatch.cpp.obj):templmatch.cpp:
(.text$_ZN2cv9crossCorrERKNS_3MatES2_RS0_NS_5Size_IiEEiNS_6Point_IiEEdi+0x1ce5):
undefined reference to 'cv::dft(cv::_InputArray const&, cv::_OutputArray const&, int, int)'
C:\opencv\build\x86\mingw\lib\libopencv_imgproc246.a(templmatch.cpp.obj):templmatch.cpp:
(.text$_ZN2cv9crossCorrERKNS_3MatES2_RS0_NS_5Size_IiEEiNS_6Point_IiEEdi+0x1dab):
undefined reference to 'cv::mulSpectrums(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int, bool)'
C:\opencv\build\x86\mingw\lib\libopencv_imgproc246.a(templmatch.cpp.obj):templmatch.cpp:
(.text$_ZN2cv9crossCorrERKNS_3MatES2_RS0_NS_5Size_IiEEiNS_6Point_IiEEdi+0x1ded):
undefined reference to 'cv::dft(cv::_InputArray const&, cv::_OutputArray const&, int, int)'
collect2: ld returned 1 exit status
Кто-нибудь может предоставить мне реальную пошаговую ссылку на статическую библиотеку OpenCV в Windows с использованием Eclipse и MinGW?
EDIT: Я узнал, что в VS мы должны добавить библиотеки, такие как: libtiff.lib libpng.lib libjpeg.lib libjasper.lib IlmImf.lib zlib.lib, который я сделал, но проблема не устранена. Затем я слышал, что добавление Vfw32.Lib comctl32.lib решило проблему, но, к сожалению, я думаю, что они специфичны для VS.
Добавление сторонних библиотек -llibjasper -llibtiff -lopencv_lapack -lzlib -lpng -ljpeg -lpthread -lrt
должно решить проблему.
Попробуйте составить очень простой код OpenCV. Порядок связывания библиотек важен при связывании статических библиотек.
Если libraryA
зависит от libraryB
libraryA
, то перед определением libraryA
необходимо определить libraryB
.