2013-01-13 37 views
0

我正在使用eclipse CDT(Indigo Service Release 2)在Windows 7 64位機器上使用opencv 2.4.0。遵循opencv下載站點上描述的步驟,我從源代碼(使用cmake/visual studio express 10)遵循opencv。將C++與c版本混合後的opencv鏈接錯誤

當我使用opencv C函數(在我的C++代碼中)時,一切運行良好。當我嘗試使用cv :: Mat時,它給了我一個鏈接錯誤(例如:對`cv :: Mat :: Mat(_IplImage const *,bool)'的未定義引用)。

  • 我需要鏈接哪些庫以使opencv C++函數與純C函數一起工作?我已經與opencv_core240和其他我需要的鏈接,並且它適用於opencv C函數。

  • 我注意到ocv庫的兩個版本,一個帶有後綴'd',所以opencv_core240和opencv_core240d。 2的區別是什麼?

+0

後綴'd' - 調試版本,沒有後綴 - 釋放。 – cyriel

回答

1
#include <iostream> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    IplImage *image = cvLoadImage("C:\\any_picture.jpg"); 
    Mat m = Mat(image); 
    imshow("test",m); 
    waitKey(); 
    return 0; 
} 
  1. 試圖通過鏈接調試文件,如opencv_core240d.lib,opencv_highgui240d.lib上面的代碼,opencv_imgproc240d.lib
  2. 添加路徑到bin文件夾到環境變量
  3. 嘗試獲得最新的opencv ie 2.4.3
+0

仍然是同樣的問題!代碼編譯,但將錯誤鏈接到除cvLoadImage()之外的所有函數。 我會得到opencv 2.4.3並嘗試。 – user1446316

+0

好的...和後,如果你仍然有錯誤的錯誤...! –

+0

與2.4.3同樣的錯誤!另一方面,它在Visual Studio Express 10中編譯時(而不是使用Eclipse/MinGW GCC工具鏈)工作得很好。接下來嘗試用eclipse編譯opencv本身,但編譯以opencv lib /目錄中的一堆.a文件結束(因此沒有生成.lib文件)。在CMake中,我使用'Eclipse CDT4 - MinGW Makefiles'選項作爲生成器。有什麼想法可能是錯誤的? – user1446316

0

找到了解決辦法。當在mingw工具鏈中使用eclipse時,你應該使用mingw編譯opencv。編譯從命令行opencv爲我工作。

  1. 後續部分除了來自OpenCV的InstallGuide
  2. 到MINGW32,化妝,使-j '使用命令行編譯GCC',也做一個 'make install' 命令。這將在您創建opencv二進制文件的文件夾中創建一個安裝目錄。 opencv庫將被放置爲安裝/ lib
  3. install/lib中的lib文件將具有'.dll.a'擴展名,如'libopencv_core243.dll.a'。 鏈接到您的項目中的這些庫文件轉到屬性 - > C/C++常規 - >路徑和符號 - >庫。然後添加不帶前綴'lib'和後綴'.dll.a'的庫名稱。所以要鏈接到'libopencv_core243.dll.a'只是使用'opencv_core243'