Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃

2024-01-01

我已经下载了 Qt 4.8.2 库、Qt Creator 2.5.2,并使用 w32api 版本 3.13 和 GCC/g++ 版本 4.7.0.1 手动安装了 MingW。我的操作系统是 Windows 7 Ultimate x64。

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

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

MingW 安装在C:\MingW and C:\MingW\bin is in PATH。 Qt 安装在C:\Qt\4.8.2 and C:\Qt\4.8.2\bin is in PATH.

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

  • c:\windows\system32\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

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

EDIT

我还尝试了 Qt 的示例项目:2dpainting 和地址簿 - 启动时都崩溃了。


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

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

上次我用 MinGW 构建 Qt (4.7.3) 时,我必须制作以下补丁 - 我不确定它们是否仍然适用于 Qt 4.8:

  • 确保不要在编译器中启用 C++11 模式 - 有几个带有连接字符串文字的宏在新的 C++11 扩展文字语法下会被破坏
  • MinGW 的某些发行版如何将 Microsoft 扩展合并到float.h- 有时我不得不添加以下行:

    #include_next <float.h>
    

    到 MinGW 特定的结尾float.h所以通用的 GCCfloat.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 位发行版不需要此补丁)。

  • patch qmake\Makefile.win32-g++ and qmake\Makefile.win32-g++-sh删除-static-libstdc++GCC 无法识别的选项(现在会出错而不是忽略)

  • patch mkspecs/win32-g++/qmake.conf移动-Wl, in the QMAKE_LFLAGS_EXCEPTIONS_ON宏到其适当的位置QMAKE_FLAGS:

    QMAKE_LFLAGS        = -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
    QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
    
  • copy make.exe to mingw32-make.exe在 MinGW 的bin目录(如果还没有)mingw32-make.exe

然后构建 Qt 包括:

  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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 为什么我们需要杰克逊数据绑定?

    我是 Spring MVC 的新手 我的问题是 为什么我们需要 jackson databind 因为我们可以收到Request Params by ModelAttribute并通过 http PUT 或 POST 请求 RequestB
  • 在 React 中更新 d3 元素?

    我正在尝试根据输入栏中的搜索输入更新此气泡图 现在 我将所有 d3 代码放入 Bubble js 中 然后在 app js 中 我有一个 searchinput 元素 它将过滤要显示的数据 然后在 Bubble 的状态中 我将其数据设置为等
  • UIPageViewController委托方法类似于scrollViewDidScroll:(UIScrollview*)scrollview

    我正在使用 UIPageViewController 来滑动一系列视图控制器 我希望父视图控制器的背景在滑动时根据视图之间滚动的位置在颜色之间平滑过渡 我希望 UIPageViewController 会有一个类似于带有位置的 scroll
  • 看起来像链接的按钮

    您好 我有一个要求 不允许我在页面上使用 javascript 我有一些asp LinkButtons但这些似乎使用了 javascript 所以我用按钮替换了它们
  • PHP 连接:关闭

    我有一个 PHP 应用程序 但遇到了一些问题 某些页面需要很长时间才能加载 几个小时后我发现了问题 但我不知道如何解决它 问题似乎出在标题上Connection keep alive 我使用了一个名为 Tamper Data 的 Firef
  • 如何在android中闪烁通知图标? [完毕]

    我搜索了很多东西 例如 如何在谷歌地图上显示闪烁的图标 https stackoverflow com questions 6729255 how to show icon blinking on google map 但根据这个我不知道如
  • Prolog 中 \+ 是什么意思?

    我在这里看到了一些使用它的答案 但我不知道它是什么意思或如何使用它 我也很难通过搜索引擎找到它 这是 无法证明 http en wikipedia org wiki Prolog Negation 操作员 如果其论证不可证明 则它成功 如果
  • 即使关闭 SSH 终端后,如何保持 Websocket 服务器运行?

    因此 我将 Ratchet 与 PHP 结合使用 并且目前已将一个成功的 websocket 示例上传到我的服务器 它在我进入 SSH 后起作用 然后只需手动运行 php bin chat server php 我想知道的是 在商业情况下
  • 更改 VSCode 用户设置位置

    我想将我的用户设置文件置于版本控制之下 最好是一个单独的文件夹 但我找不到告诉 VSCode 我的设置文件所在位置的选项 有没有办法更改 Visual Studio Code 查找的位置settings json file Update 由
  • 在多台 Mac 上开发 iPhone 应用程序

    这可能非常愚蠢 但我可以使用多台具有不同开发配置文件的 Mac 来制作应用程序吗 如果我带着我朋友的 Macbook 去旅行 而他也是一名开发人员并拥有自己的开发配置文件 我可以使用我自己的开发人员配置文件来处理我的应用程序而不干扰他的应用
  • 在 JavaScript 中初始化对象的空属性的正确方法是什么

    我有一个具有属性的对象 其中 1 个属性prop2只会在稍后初始化并在准备好时添加到该对象 我想将其显示为对象的属性 纯粹是为了人类可读性 这样当我稍后查看代码时 我就会知道它存在并且将 可以使用 所以我的问题是什么 是什么正确的方法初始化
  • 如何查看/更新数据库版本?有类似“fallbackToDestructiveMigration”之类的东西吗?

    修改后sq通过重命名其中一个表并添加另一个表来更改我的文件 我没有找到任何地方来指定数据库架构或版本已更改 并且我不想迁移 只需重新创建数据库 有关的文档官方网站 https cashapp github io sqldelight mul
  • 阻止访问 php.ini 文件

    我们在 Web 树的根目录中有一个自定义的 php ini 和 htaccess 文件 默认情况下 htaccess无法访问 但php ini可以访问 例如 http example com php ini 阻止访问 php ini 文件的
  • 在 Qt Creator 中进入 Qt 源代码(在 Ubuntu Linux 中)

    我在 Ubuntu 中使用 Qt Creator 它是从存储库安装的 但就像现在一样 调试时无法进入 Qt 源代码 我怎样才能启用它 由于Qt Creator使用gdb 因此需要配置gdb 首先要做的是安装 Qt 调试符号 apt get
  • 服务器时区值“CDT”无法识别或代表多个时区

    当尝试连接到我网站上的 mySQL 时 我收到此消息java sql SQLException 服务器时区值 CDT 无法识别或 代表多个时区 您必须配置服务器或 JDBC 驱动程序 通过 serverTimezone 配置属性 使用更多
  • MPMoviePlayerViewController 定制

    我正在使用 MPMoviePlayerViewController 播放器控件设置为 MPMovieControlStyleFullscreen 我对 MPMovieControlStyleFullscreen 中的一些按钮有问题 前进 后
  • 如何将原点置于 imshow() 图的中心

    作为模拟通过孔径的衍射的长程序的一部分 我正在摆弄尝试得到我的结果plt imshow 使其原点位于绘图的中心 即我希望更改轴 相关代码部分是 n 40 lam 0 0006 k 2 np pi lam z float input Type
  • 使用 PHP MySQL PDO 通过 OTP/2FA 登录

    它工作正常 除了 如果我在 otp 字段中输入一个数字 即使它与数据库中的数字不匹配 它也会转到 home php 您能告诉我代码有什么问题或丢失吗 谢谢你 if empty POST authenticate POST otp try o
  • 图像文件副本,正在被另一个进程使用

    我正在尝试创建一个用户 perfil 编辑窗口 在此窗口中有一个图像控件当我选择一个图像文件时 它将显示在这个图像控件中 并将该文件复制到我的图像文件夹中 第一次没问题 但第二次 它显示错误 该进程无法访问文件 C 1 jpg 因为它正在被
  • Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃

    我已经下载了 Qt 4 8 2 库 Qt Creator 2 5 2 并使用 w32api 版本 3 13 和 GCC g 版本 4 7 0 1 手动安装了 MingW 我的操作系统是 Windows 7 Ultimate x64 我可以在