Я знаю, что об этом спрашивали несколько раз, но все же я борюсь с неопределенной ссылкой на ошибку компоновщика для простого кода opencv. Это мой код:
#include <opencv2/highgui.hpp>
using namespace cv;
int main(int argc, char** argv) {
Mat inputImage = imread(argv[1]);
imshow("Input Image", inputImage);
waitKey(0);
}
Я использую eclipse IDE, компилятор cygwin g++ и opencv 3.0. Я правильно указал путь включения, путь поиска библиотеки как "C:\opencv\build\x64\vc11\lib" и "C:\opencv\build\x64\vc11\staticlib" и библиотеки: opencv_highgui300, opencv_highgui300d, opencv_core300, opencv_core300d ,opencv_imgcodecs300,opencv_imgcodecs300d, и я думаю, что этого вполне достаточно для этого простого кода, как видно из документации opencv. Но все еще получаю ошибку компоновщика для imread, imshow, waitkey, как уже упоминалось. Я пробовал с pkg-config, но pkg-config дает проблему на моей 64-битной машине: ошибка при загрузке общих библиотек, и это тоже не удалось решить.
Ниже приведен результат сборки:
сделать все
Файл сборки: ../ShowImage.cpp
Вызов: Компилятор Cygwin C++
g++ -I"C:\opencv\build\include\opencv "-I"C:\opencv\build\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"ShowImage.d" -MT"ShowImage.d" -o "ShowImage. o" "../ShowImage.cpp" Готовое построение: ../ShowImage.cpp
Цель сборки: Test.exe
Вызов: Cygwin C++ Linker
g++ -L"C:\opencv\build\x64\vc11\lib" -L"C:\opencv\build\x64\vc11 \staticlib" -o "Test.exe"./ShowImage.o -lopencv_highgui300 -lopencv_highgui300d -lopencv_core300 -lopencv_core300d -lopencv_imgcodecs300 -lopencv_imgcodecs300d
./ShowImage.o: в функции main':*
*/cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/../ShowImage.cpp:12: undefined reference to
cv::imread( cv::String const&, int)' /cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/../ShowImage.cpp:12:(.text+0x44): перемещение усечено, чтобы соответствовать: R_X86_64_PC32 против неопределенного символа `cv: :imread(cv::String const&, int)'
Я что-то упустил? Любая помощь будет оценена.