Неопределенная ссылка на cv::imread

Я знаю, что об этом спрашивали несколько раз, но все же я борюсь с неопределенной ссылкой на ошибку компоновщика для простого кода 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 tocv::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)'

Я что-то упустил? Любая помощь будет оценена.


person Shailesh    schedule 07.07.2015    source источник
comment
сообщение 1. ошибка компоновщика 2. командные строки компилятора и компоновщика   -  person Micka    schedule 07.07.2015
comment
Я что-то пропустил - да. вы просто не можете использовать prebuild vs libs с mingw. хотя вы правильно пытались добавить opencv_imgcodecs300.lib - он был сделан для другого компилятора. теперь вам нужно будет получить cmake и собрать библиотеки opencv из src.   -  person berak    schedule 07.07.2015
comment
@berak Спасибо за понимание проблемы. Теперь я могу скомпилировать и запустить приложение с визуальной студией. Также я узнал, что мне следует добавлять библиотеки только любого типа (например, opencv_highgui300d или opencv_highgui300) в зависимости от конфигурации отладки или выпуска соответственно, но не обе, поскольку imread всегда возвращался null для любого входного изображения.   -  person Shailesh    schedule 07.07.2015


Ответы (1)


Если кто-то наткнется на это по другим причинам, у меня возникла проблема, когда параметры ссылки OpenCV в док-контейнере x86 Ubuntu 18.04 отличаются от параметров в Ubuntu 16.04 Raspberry Pi, и я решил проблему, заменив флаг компоновщика -lopencv_imgcodecs на компоновщик флаг -lopencv_highgui.

person Mike Spear    schedule 20.10.2018