QT 输出“以代码 0 退出”并且没有显示图像

Posted

技术标签:

【中文标题】QT 输出“以代码 0 退出”并且没有显示图像【英文标题】:QT output is "exited with code 0" and no image is shown 【发布时间】:2013-05-07 06:48:16 【问题描述】:

我正在编写以下代码:

ma​​in.cpp

#include <QCoreApplication>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;

using namespace std;

int main(int argc, char *argv[])

    Mat image = imread("C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg");
    namedWindow("Image");
    imshow("Image",image);
    waitKey(0);

Test.pro

#-------------------------------------------------
#
# Project created by QtCreator 2013-05-07T10:38:38
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = Test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp
INCLUDEPATH += E:/Jasmin/Yohan/opencv/build/include
INCLUDEPATH += E:/Jasmin/Yohan/opencv/include/opencv2

LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_calib3d240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_contrib240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_core240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_highgui240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_imgproc240.dll.a

当我运行此代码时,没有显示图像,打印以下输出

Starting E:\Jasmin\Yohan\QTProjects\build-Test-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\Test...
E:\Jasmin\Yohan\QTProjects\build-Test-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\Test exited with code 0

下面将opencv相关的环境变量添加到“path”系统变量中

E:\Jasmin\Yohan\opencv\build\x86\mingw\bin;E:\Jasmin\Yohan\opencv\build\x86\vc10\bin

为什么我会遇到这个问题?我的 QT creator 版本是 2.7.0

更新

这是我的调试器要说的:

【问题讨论】:

我不知道,但我会在代码中的不同位置添加 std::cout &lt;&lt; "got here\n"; 以查看它到达的位置。 你的调试器说什么? @cmannett85:请看更新 @john:我在 main 的开头放了一个 print 语句。完全没有指纹\ 如果它在 main 之前崩溃,通常是动态链接问题。使用与ldd(Dependency Walker?)等效的 Windows 来查看您的应用正在请求哪些 dll,以及它实际找到了什么。 【参考方案1】:

您的代码似乎在做它应该做的事情:waitKey(0) 等待零秒或毫秒,然后程序退出。增加等待时间或将 waitKey 置于循环中..

【讨论】:

waitKey() 中的 0 表示永远 是的,这是标准的东西,就像"system("pause")【参考方案2】:

使用“...\opencv\build\x86\mingw\bin”和“...\opencv\build\x86\mingw\lib”中的库

不能使用 OpenCV-2.4.x.exe 自带的库。

正如论坛中的一些开发人员和我发现的那样。在某些系统上,“opencv 2.4.x”的预编译库无法使用。 编译你自己的程序是可行的,但如果你尝试运行它们,它就会崩溃。在没有“opencv 2.4.x”的预编译库无法运行之前,您必须自己编译opencv。

完全忽略文件夹“...\opencv\build\x86\mingw\bin”和“...\opencv\build\x86\mingw\lib”。

Using the libs

How to build and use openCV

【讨论】:

以上是关于QT 输出“以代码 0 退出”并且没有显示图像的主要内容,如果未能解决你的问题,请参考以下文章

VS2013,C++:未知的“线程 X 以代码 0 退出”

在 Qt GUI 中加载和显示图像

Qt可显示基本的图像类型,利用QImageQPxmap类可以实现图像的显示

QGuiApplication没有显示使用QPainter和QPdfWriter

Qt 图像不会显示在按钮中

为啥我执行 Python QT5 代码时没有显示图标和图像?