我在 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/