0

我在windows 32bit下使用opencv工作了几个月,使用eclipse和mingw。几个小时后,我的程序通过构建,链接没有错误,但是当启动它时崩溃......我最喜欢的“不发送”窗口......

资源:

    #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 被评论,没有问题,但是当尝试使用 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 64bit,Eclipse CDT Kepler,Mingw。在 trat 之前,我正在研究 XP 32bit。问题是否有可能来自操作系统?

4

2 回答 2

0

这个问题现在有点老了,但它可能对其他人有帮助:我遇到了同样的问题。它只是在没有任何信息性错误消息的情况下崩溃了。我最终自己使用 MingGW64 以 64 位模式编译 OpenCV 并链接到那些编译的库。谷歌周围 - 有关于如何做到这一点的教程。然后它工作得很好。我敢打赌,您的 C++ 编译器/链接器版本与编译 OpenCV 64 位库的版本之间存在一些兼容性问题。

于 2013-12-03T19:16:32.610 回答
0

尝试删除每个或两个-O3-g3编译选项。他们之间的相处并不特别好。

还要检查您是否已安装并链接 64 位版本的标准 C++ 库。

尝试删除该system命令。它调用一个外部命令,这可能是有问题的。

也替换coutcerr,它是无缓冲的,因此更适合输出调试消息。

如果程序仍然卡顿,请注释每一行以挑出导致问题的行以进行进一步跟踪。

于 2013-08-26T13:37:07.177 回答