Связывание библиотек opencv .a с mingw и Qt 5.0

Это круто! Пожалуйста, не путайте это с вопросом новичка;) У меня слишком много миль в этом статическом материале OpenCV + MinGW для простых ошибок ....

Окружающая среда: а. Qt 5.0.1 построен с использованием MinGW (стандартная загрузка с открытым исходным кодом из qt-project) - так что все построено в той же среде MinGW. б. Используя CMake, я установил минимальную сборку (используя тот же g ++ / gcc, что и Qt) и отключил SHARED_LIBRARIES. c. сгенерированный cmake + mingw32-make + mingw32-make install работает нормально.

здесь все выглядит довольно гладко ...

Теперь, когда я добавил:

win32-g++:INCLUDEPATH += D:/Dev/opencv/build/install/include
win32-g++:LIBS += -LD:/Dev/opencv/build/install/lib
win32-g++:LIBS += -static
win32-g++:LIBS += -llibopencv_core243d
win32-g++:LIBS += -llibopencv_imgproc243d
win32-g++:LIBS += -llibopencv_highgui243d

(а также без дополнения "win32-g ++" ..)

Я получаю d:/dev/qt/qt5.0.1/tools/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibopencv_highgui243d

...
...

теперь ... У меня есть libopencv_highgui243d.a в правильном каталоге, но компоновщик ld.exe игнорирует все, кроме библиотеки! который должен был быть библиотекой MS (чего я хотел избежать в первую очередь !!!) - я даже попытался переименовать файлы .a в .lib, из-за чего компоновщик рассматривал файлы, но показывал много "не связанных" ошибок ...

Так кто виноват? компоновщик? CMake? мингв? Qt? ....

Я пробовал много параметров командной строки / флага, но безуспешно ..


person Community    schedule 16.02.2013    source источник
comment
Здравствуйте, господин эксперт, пробовали ли вы без начального lib? Пример: LIBS += -lopencv_core243d   -  person karlphillip    schedule 17.02.2013
comment
Раньше мне удавалось делать это, передавая полный путь к файлу и полное имя файла LIBS (включая расширение файла. Пример: LIBS += D:/blah/blah/libopencv_highgui243d.a   -  person karlphillip    schedule 17.02.2013
comment
Привет, Карлфиллип ... это очень странно, но ты прав! это очень странно, потому что имя файла действительно libopencv_core243d.a (с библиотекой), так что кто вообще думал о сокращении начала имени файла ???? !!! КАКАЯ ДУМАЯ КОМАНДНАЯ ЛИНИЯ / СОБЫТИЕ ... ~~~~ Это меня злит! но спасибо X100000!   -  person    schedule 18.02.2013
comment
У меня слишком много миль в этом статическом материале OpenCV + MinGW для простых ошибок .... - Моя первая мысль: держу пари, ответ будет простым.   -  person Christoph    schedule 13.11.2013


Ответы (1)


Вы должны обращаться к библиотекам как:

LIBS += -lopencv_core243d
LIBS += -lopencv_imgproc243d
LIBS += -lopencv_highgui243d

Поскольку -l уже вставляет lib в начало имени.

person karlphillip    schedule 17.02.2013