我创建了简单的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:\Users\juriy\test\release\test.exe...
The program has unexpectedly finished.
C:\Users\juriy\test\release\test.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
,但由于缺少cc1plus选项-fno-keep-inline-dllexport
而被滥用。
请帮助理解工具的依赖关系并运行应用程序。
gdb是否正确配置为i686-pc-mingw32
,如上所述?我的电脑中有两种环境Cygwin和本机Windows。并且i686-pc-ming32
中的C:\QtSDK\mingw\bin
名称与ar.exe
名称相同,但c++filt.exe
,i686-*-mingw32-*
等简单名称等。Имя сбойного приложения: test.exe, версия: 0.0.0.0, отметка времени: 0x55912535
Имя сбойного модуля: QtCored4.dll, версия: 4.8.6.0, отметка времени 0x00000000
Код исключения: 0xc0000005
Смещение ошибки: 0x00106acf
Идентификатор сбойного процесса: 0x1340
Время запуска сбойного приложения: 0x01d0b26aab6adef8
Путь сбойного приложения: C:\Users\juriy\test\debug\test.exe
Путь сбойного модуля: C:\Qt\4.8.6\bin\QtCored4.dll
Код отчета: ec353438-1e5d-11e5-b20d-f46d04d35ed7
之类的表格在Cygwin env中具有程序。
编辑:(ЗаписивжурналесообщенийWindows)
//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();
}
编辑:澄清情况的一些消息来源。
object Ch4 {
def main(args: Array[String]) {
println("Hello, world!")
val x = sortMap()
println(x)
} //> main: (args: Array[String])Unit
def sortMap ( ) {
val scores = scala.collection.immutable.SortedMap ( "Alice" -> 10, "Fred" -> 7, "Bob" -> 3)
return scores
} //> sortMap: ()Unit
}
答案 0 :(得分:0)
使用与构建库相同版本的编译器非常重要。 Here有关用于构建qt
库的版本的信息。一些有用的网站跟随我做出此决定:qt centre forum和another one。