基本 qt 应用程序无法运行,但已编译
Basic qt app doesn't run but compilied
我创建了一个简单的qt应用程序:只是一个裸露的小部件。它装配得很好,没有任何问题。组成如下:
mingw32-make -j5 -f Makefile.Release
mingw32-make[1]: Entering directory C:/Users/juriy/test'
g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../../../Qt/4.8.6/include/QtCore' -I'../../../Qt/4.8.6/include/QtGui' -I'../../../Qt/4.8.6/include' -I'../../../Qt/4.8.6/include/ActiveQt' -I'release' -I'.' -I'../../../Qt/4.8.6/mkspecs/win32-g++' -o release/main.o main.cpp
当我在QtCreator中启动应用程序时,它会像这样进行调试:
Debugging starts
Debugging has failed
Debugging has finished
没有这样的调试模式:
Starting C:Usersjuriytestreleasetest.exe...
The program has unexpectedly finished.
C:Usersjuriytestreleasetest.exe crashed
GDB:
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-mingw32"...
BFD: BFD (GNU Binutils) 2.18.50.20080226 internal error, aborting at coffcode.h line 842 in handle_COMDAT
BFD: Please report this bug.
对于这样一个版本的Qt,我似乎使用了错误的工具。我的工具:QtSDK 1.2.1
和Qt 4.8.6
的整个工具链。
我尝试了Cygwin包make
和MinGW binutils
,但由于缺少-fno-keep-inline-dllexport
选项,它被滥用了。请帮助理解工具的依赖关系并运行应用程序。
如上所述,gdb被配置为i686-pc-mingw32
,这是正确的消息吗?我的电脑有两个环境Cygwin和原生Windows。在C:QtSDKmingwbin
中没有类似的i686-pc-ming32
名称,而是简单的名称,如ar.exe
、c++filt.exe
等。类似i686-*-mingw32-*
的形式在Cygwin env中有程序。
编辑:(窗户)
Имя сбойного приложения: test.exe, версия: 0.0.0.0, отметка времени: 0x55912535
Имя сбойного модуля: QtCored4.dll, версия: 4.8.6.0, отметка времени 0x00000000
Код исключения: 0xc0000005
Смещение ошибки: 0x00106acf
Идентификатор сбойного процесса: 0x1340
Время запуска сбойного приложения: 0x01d0b26aab6adef8
Путь сбойного приложения: C:Usersjuriytestdebugtest.exe
Путь сбойного модуля: C:Qt4.8.6binQtCored4.dll
Код отчета: ec353438-1e5d-11e5-b20d-f46d04d35ed7
编辑:一些来源澄清情况。
//widget.h
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
//widget.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
// main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
使用与构建库相同版本的编译器非常重要。以下是有关用于构建qt
库的版本的信息。一些有用的网站跟随我做出这个决定:qt中心论坛和另一个。
- 如何在linux终端中同时编译和运行c++代码
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 尝试用java代码编译和运行c++代码
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- 编译并运行后,输出未出现在 Visual Studio 代码中
- 在运行时解析函数,而不是在编译C++解析函数
- 编译多个C++文件.调用二进制文件以运行代码
- 在编译时,C++项目抛出错误 C2228,这是预期的,因为控件在运行时未达到该点
- 是否可以编译 Gtk+ 应用程序以同时在 Gtk 2 和 3 上运行
- 在编译时为运行时设置环境变量
- 如何让谷歌测试正常运行。测试总是失败。(它不会编译)
- 运行时检查失败 #0 用于运行时重新编译
- 如何从测试脚本中运行WAF编译C++程序?
- std::tuple 可以根据其值在编译时/运行时排序吗?
- 在iPhone上编译/运行C++代码
- 在编译/运行时将字符串文本的原始字节流入/流出Windows(非宽)执行字符集,以及ANSI代码页与UTF-8
- Visual Studio、CodeBlocks和Eclipse中的C++编译/运行问题
- c++相同的代码永远不会在Visual Studio中编译/运行,有时在Qt Creator中编译/运行
- 是否可以基于宏或变量有条件地编译/运行代码