首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt 4.8.2和GCC 4.7.0.1持续崩溃

Qt 4.8.2和GCC 4.7.0.1持续崩溃
EN

Stack Overflow用户
提问于 2012-09-12 04:25:22
回答 2查看 3.8K关注 0票数 2

我下载了Qt4.8.2库、Qt 2.5.2,并手动安装了带有MingW版本3.13和GCC/g++版本4.7.0.1的w32api。我的操作系统是Windows7终极x64。

我可以在Qt中创建一个示例“纯C++项目”;使用g++编译并运行控制台应用程序,没有任何问题。

但我不能运行Qt应用程序。我使用了Qt,使用Creator的“”模板创建了一个虚拟Qt应用程序。可以成功编译项目,而不会出现任何错误或警告。但是,当我尝试运行它(包括Qt CreatorWindows Explorer)时,二进制文件一直在崩溃。调试和发布版本崩溃。它甚至在显示主窗口之前就崩溃了。

MingW安装在C:\MingW中,C:\MingW\bin安装在PATH中。Qt安装在C:\Qt\4.8.2中,C:\Qt\4.8.2\bin安装在PATH中。

我使用Dependency分析了Qt应用程序输出的生成的exe,发现它找到了所有必需的DLL:

  • C:\windows\system32 32\KERNEL32.DLL
  • c:\windows\system32\MSVCRT.DLL
  • c:\mingw\bin\LIBGCC_S_DW2-1.DLL
  • c:\mingw\bin\LIBSTDC++-6.DLL
  • c:\qt\4.8.2\bin\QTCORE4.DLL
  • c:\qt\4.8.2\bin\QTGUI4.DLL

那么,是什么导致运行时崩溃呢?

编辑

我还尝试了Qt的示例项目:2 d绘画和地址簿--它们在启动时都崩溃了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-12 08:13:51

应该使用用于构建应用程序的MinGW编译器来构建Qt。GCC对二进制兼容性问题的敏感性一般不如MSVC,但Qt是一个庞大而复杂的框架库。如果有什么可以暴露这些问题的话,Qt很可能会出现在候选名单上。

构建Qt非常简单,但是它需要花费大量的时间,而且似乎总是需要两到三个补丁才能成功构建。

上次我用MinGW构建Qt (4.7.3)时,我不得不做以下补丁--我不确定它们是否仍然适用于QT4.8:

  • 确保在编译器中不启用C++11模式--在新的C++11扩展字面语法下,有几个带有连接字符串文字的宏中断。
  • MinGW的某些发行版如何将微软的扩展合并到float.h中存在一个问题--我有时不得不添加行: #include_next 到了MinGW特定的float.h结束时,一般GCC的float.h就会得到正确的处理。我不得不为nuwen 4.7.0 lib/gcc/i686-pc-mingw32/4.7.0/include/float.h和TDM 4.6.1 32位发行版lib/gcc/mingw32/4.6.1/include/float.h ( TDM的64位发行版不需要此修补程序)这样做。
  • 修补qmake\Makefile.win32-g++qmake\Makefile.win32-g++-sh以删除GCC不识别的-static-libstdc++选项(而不是忽略)
  • 修补mkspecs/win32-g++/qmake.conf以将QMAKE_LFLAGS_EXCEPTIONS_ON宏中的-Wl,移动到QMAKE_FLAGS中的适当位置: QMAKE_LFLAGS = -Wl,-enable-stdcall,-enable-auto,-enable-runtime-伪reloc QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
  • make.exe复制到MinGW的bin目录中的mingw32-make.exe (如果还没有mingw32-make.exe )

然后构建Qt包括:

代码语言:javascript
运行
复制
  set QTDIR=<location of Qt source directory>  # where configure.exe is
  set PATH=%QTDIR%\bin;c:\MinGW\bin;%PATH%
  set INCLUDE=
  set LIB=
  cd %QTDIR%

  mingw32-make confclean    # (this should fail the first time, since there's nothing to clean)
  configure.exe -opensource -debug-and-release -nomake examples -nomake demos -nomake tests -platform win32-g++  # and accept the GPL license
  mingw32-make

这需要一段时间。希望没有其他东西需要修补。

票数 4
EN

Stack Overflow用户

发布于 2013-02-11 13:37:46

我也有这个问题。我是一个Qt n00b,在安装Qt库时,我说:“我已经安装了明威,所以我跳过安装Qt附带的明名。”这给了我很多麻烦。当安装Qt附带的mingw时,一切正常。

因此,我对任何在谷歌上搜索这个问题的人(就像我一样)的建议是,不要使用你已经安装好的明威,安装一个带有Qt的,并使用它(否则,你必须在你的鸣声中构建Qt库,就像迈克尔·伯尔的答案一样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12381205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档