2011-12-11 32 views
1

我目前正在嘗試使用OpenCV,但遇到了一些麻煩.. 我使用qt ide與mingw編譯我的應用程序。將靜態庫(.a)與mingw連接成EXE

我的代碼如下所示:

#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 

的庫。作爲(該dll是在lib的名稱部分,它不是擴展名)..我知道。一個庫是Linux特定的,但mingw應該能夠正確使用它們嗎?

我使用mingw構建了OpenCV庫,但我無法讓它們鏈接到我的Qt應用程序。MinGW可以看到頭文件很好,但不是庫。 我總是得到「未定義的參考cvShowImage'", "undefined reference to cvNamedWindow'」(等)錯誤..

任何幫助表示讚賞! Thnx!

+0

這些.a文件是Windows或Linux庫? –

+0

他們在windows下用mingw編譯.. – elephantintheroom

回答

0

的dll.a不是靜態庫文件他們是存根動態鏈接.dll - 你需要重建的OpenCV使用靜態庫.lib,並直接與您的代碼鏈接的

+0

好的..我會試試..謝謝! – elephantintheroom

+0

@Martin謹慎地指出如何以這種方式重建它們?這是CMake中的一個選項嗎? –

+0

@IvoFlipse,從不需要,但顯然只是取消選中cmake中的'BUILD_SHARED_LIBS'。見http://www.shiffman.net/2011/01/23/how-to-build-opencv-static-libraries-mac-os-x/ –