c++ - 从 32 位迁移到 64 位 - OpenCV/MinGW/Eclipse

标签 c++ eclipse opencv crash 64-bit

我在 windows 32 位下使用 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 64位、Eclipse CDT Kepler、Mingw。在 trat 之前我正在使用 XP 32 位。问题是否有可能来自操作系统?

最佳答案

尝试删除每个或两个 -O3-g3 编译选项。他们彼此相处得不太好。

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

也尝试删除system命令。它调用外部命令,这可能会出现问题。

同时将 cout 替换为 cerr,后者是无缓冲的,因此更适合输出调试消息。

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

关于c++ - 从 32 位迁移到 64 位 - OpenCV/MinGW/Eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445224/

相关文章:

c++ - 将 Lab 值转换为 opencv 中的 RGB 值

c - 如何解决 OpenCV libjpeg 和 fltkjpeg 之间的库冲突?

c++ - 未找到 Fmod 常量 (FMOD_HARDWARE)

c++ - 在 Eclipse 中缩进函数大括号

c++ - 如何在 Visual Studio 2019 中使用 cmake 项目进行 "Edit and Continue"构建?

Eclipse 找不到源附件

java - 将 Eclipse 项目编译成 jar

python-3.x - 如何在Opencv Python中将多个图像保存到目标文件夹

c++ - 我的c++代码。会不会出现内存泄漏?

c++ - Linux:使用管道标准输入/标准输出执行子进程