Win7 / Eclipse / OpenCV / MinGW:应用程序每次启动时都会崩溃
Win7 / Eclipse / OpenCV / MinGW: Application crashes everytime it starts
经过与我和OpenCV的激烈斗争,我终于找到了本教程:
OpenCV with MinGWon Eclipse Tutorial(滚动到"OpenCV - with CMake & MinGW")
我按照编写的内容做了所有操作,但是每次我尝试启动应用程序时,它都会在几秒钟后停止响应,并显示Windows警报通信。我注意到,我可以自由运行标准C++程序并包含头文件,但是在一行OpenCV代码之后,它无法正常工作。也没有关于错误的信息。
你为什么不试试官方教程 http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html#linux-eclipse-usage
这是OpenCV文档中的官方网站,应该可以帮助您入门,它包括帮助您开始使用许多其他平台的教程http://docs.opencv.org/doc/tutorials/introduction/table_of_content_introduction/table_of_content_introduction.html#table-of-content-introduction
我也有一些时间让OpenCV运行,但最终我找到了一些有用的东西(我使用Qt Creator作为我的IDE,而不是Eclipse,但也许问题和解决方案是相似的)。
起初我试图下载OpenCV 2.4.8,但我发现它不包含任何MinGW二进制文件。我关注了网络上的一个论坛并安装了CMake,但OpenCV 2.4.8似乎不包含MinGW的CMake目标。在阅读了更多的论坛后,我下载了OpenCV 2.4.3,并能够使用CMake和MinGW 4.8(Qt 5.2附带的版本)来构建OpenCV。这使我达到了可以编译程序并尝试运行它们的地步。一些纯 c 命令甚至像 cvLoadImage 一样工作,但任何 c++ 命令,如 imread 或 Mat::zeros(3,3, CV_8UC1) 都会导致崩溃。
我尝试了几次使用不同的选项构建 openCV。一些网站建议关闭SSE和SSE2或构建调试版本,但这些都不适合我。
最后我最终下载了TDM-GCC-32。我下载了按需安装程序,并确保获得编译器的 dw2 版本(因为不久前我花了一些时间处理 dw2 与 sjlj 的不兼容性)。最后,我用TDM-GCC重建了OpenCV,并将TDM-GCC设置为Qt Creator中的编译器。这最终成为修复程序。
我认为OpenCV Mat类型使用的引用计数/分配代码与某些版本的MinGW之间存在一些不兼容。我之所以这样说,是因为我所有的崩溃似乎都来自使用 openCV 矩阵的代码部分。(似乎它没有正确初始化或其他什么)。切换到TDM-GCC编译器解决了这个问题。
- ESP32 OTA更新在启动时不断崩溃
- 如何在启动过程中崩溃时使用 gdb 调试可执行文件
- 如何重新启动崩溃的线程
- 如何在同一程序中在Qt应用程序崩溃时自动重新启动Qt应用程序
- OpenGL 应用程序在启动时立即崩溃
- 在Cuda中启动2d线程块时崩溃
- 代码编译,但是在启动后崩溃(rot13)
- 我有一个 c++ 代码,它在启动时崩溃,然后到达问题所在 main() 的执行
- Arduino崩溃并在"random points"重新启动
- Win7 / Eclipse / OpenCV / MinGW:应用程序每次启动时都会崩溃
- QTimer 在以单独的方法启动时崩溃
- GDB 在启动时崩溃(内部错误:follow_die_offset)
- 本机C++程序在使用 C++/CLI 和 C# 互操作 DLL 启动时崩溃
- 新线程启动时应用程序崩溃
- 声明SDL_Rect数据成员在启动时崩溃,找不到原因
- 程序崩溃时重新启动应用程序
- QT应用程序在启动时崩溃(c++ windows)
- 不稳定的cython扩展在使用valgrind启动时不会崩溃
- 为什么当我第二次尝试启动同一个线程时,应用程序会崩溃
- 我的win32程序是否有办法告诉它启动的子进程已经崩溃(而不仅仅是退出)?