Связать статические библиотеки (.a) в exe с помощью mingw - PullRequest
1 голос
/ 12 декабря 2011

В настоящее время я пытаюсь поиграться с OpenCV, но у меня возникли проблемы ... Я использую qt ide с mingw для компиляции своих приложений.

Мой код выглядит так:

#include “highgui.h”

int main( int argc, char** argv ) 
{
    IplImage* img1 = cvLoadImage( argv[1] );
    cvNamedWindow( “Example”, CV_WINDOW_AUTOSIZE );
    cvShowImage( “Example”, img1 );
    cvWaitKey(0);
    cvReleaseImage( &img1 );
    cvDestroyWindow( “Example” );
    return(0);
}

И это в моем .pro файле:

INCLUDEPATH += "E:/OpenCV2MinGWBuild/install/include/"
INCLUDEPATH += "E:/OpenCV2MinGWBuild/install/include/opencv/"
INCLUDEPATH += "E:/OpenCV2MinGWBuild/install/include/opencv2/"
LIBS += -L"E:/OpenCV2MinGWBuild/install/lib/" -lopencv_calib3d231.dll -lopencv_contrib231.dll -lopencv_core231.dll

Это библиотеки .a-s (dll находится в именной части библиотеки, это не расширение). Я знаю, что .a библиотеки специфичны для linux, но mingw может их использовать, верно?

Я собрал библиотеки OpenCV с помощью mingw, но не могу заставить их связываться с моим приложением Qt .. MinGW прекрасно видит заголовочные файлы, но не библиотеки. Я всегда получаю «неопределенную ссылку на cvShowImage'", "undefined reference to cvNamedWindow» (и т. Д.) Ошибки ..

Любая помощь приветствуется! Thnx!

1 Ответ

0 голосов
/ 12 декабря 2011

dll.a - это не статические файлы библиотеки, а заглушки для динамически связанных .dll - вам нужно пересобрать OpenCv для использования статических библиотек .lib и связать их напрямую с вашим кодом

...