2013-08-26 60 views
0

我正在使用opencv幾個月在windows 32bit下,使用eclipse和mingw。幾個小時後,我的程序經過編譯,鏈接沒有錯誤,但是當它開始崩潰......我最喜歡的「不發送」窗口.....從32bi遷移到64位 - OpenCV/MinGW/Eclipse

來源:

#include <opencv.hpp> 
    #include <windows.h> 
    #include <iostream> 

    using namespace std; 
    using namespace cv; 

    int main() { 
     Mat img(Mat::zeros(100, 100, CV_8U)); 
     //imshow("window", img); 
     cout << "hello world!" << endl; 

     system("PAUSE"); 
     return 0; 
    } 

雖然imshow是comented,是沒有問題的,但是,當嘗試使用imshow或waitKey,它編譯,但是崩潰......

構建命令:

g++ "-IW:\\Software\\opencv\\build\\include" "-IW:\\Software\\opencv\\build\\include\\opencv" "-IW:\\Software\\opencv\\build\\include\\opencv2" -O3 -g3 -Wall -Wextra -c -fmessage-length=0 -o "src\\HelloWorld.o" "..\\src\\HelloWorld.cpp" 

    g++ "-LW:\\Software\\opencv\\build\\x64\\mingw\\lib" -o HelloWorld.exe "src\\HelloWorld.o" -lopencv_calib3d246 -lopencv_contrib246 -lopencv_core246 -lopencv_features2d246 -lopencv_flann246 -lopencv_gpu246 -lopencv_highgui246 -lopencv_imgproc246 -lopencv_legacy246 -lopencv_ml246 -lopencv_nonfree246 -lopencv_objdetect246 -lopencv_photo246 -lopencv_stitching246 -lopencv_superres246 -lopencv_video246 -lopencv_videostab246 

該系統是:Win7的64位,Eclipse CDT的開普勒,MinGW的。在我開始使用XP 32bit之前,有沒有可能是問題來自操作系統?

回答

0

嘗試刪除編譯選項中的每一個或同時刪除-O3-g3。他們並不是特別相處愉快。

另請檢查您是否已安裝並鏈接到64位版本的標準C++庫。

嘗試刪除system命令。它調用一個外部命令,這可能會有問題。

還將cout替換爲cerr,它是無緩衝的,所以更適合輸出調試消息。

如果程序仍然存在問題,請註釋每一行以找出導致問題進一步跟蹤的行。

+0

我刪除了-O3和-g3但沒有任何結果。如果我評論imshow函數它的工作,但如果我嘗試使用imshow或waitKey(0)編譯,但崩潰...在PATH變量我有W:\ Software \ opencv \ build \ x64 \ mingw \ bin和W: \ Software \ mingw \ mingw64 \ bin。我試圖刪除它們,然後程序說,它找不到DDL文件 - DDL是可以的 –

0

這個問題現在有點老了,但它可能會幫助其他人:我有同樣的問題。它只是墜毀,沒有任何信息性的錯誤信息。我最終自己使用MingGW64以64位模式編譯OpenCV,並鏈接到這些編譯的庫。谷歌周圍 - 有關於如何做到這一點的教程。然後它運行良好。我敢打賭,你的C++編譯器/鏈接器版本與OpenCV 64位庫編譯版本之間存在兼容性問題。