从第三方 DLL 调用 Qt 中的函数在调试模式下工作,在发布模式下崩溃

2024-01-04

我使用第三方 DLL (FTD2xx) 与外部设备通信。使用 Qt4,在调试模式下一切正常,但在成功完成被调用函数后,发布会无声地崩溃。它似乎在返回时崩溃,但是如果我在函数末尾向控制台(使用 qDebug)写入一些内容,有时它不会在那里崩溃,而是在几行或几十行之后崩溃。

我怀疑堆栈没有正确清理,调试版本可以幸存,但发布版本会被它阻塞。有人遇到过类似的问题吗? DLL 本身无法更改,因为源代码不可用。


看来降低优化级别是唯一的方法。 DLL 本身可能存在问题,因为如果打开优化,除了从该 DLL 调用单个函数之外不执行任何操作的程序也会以同样的方式崩溃。

幸运的是,优化级别的变化所造成的大小和速度损失可以忽略不计。

Edit:对于在 Qt 5.0 或更高版本上遇到类似问题的任何人:如果您更改优化级别(例如,更改为QMAKE_CXXFLAGS_RELEASE = -O0),仅仅重建应用程序通常是不够的。需要一个完整的“全部清理”。

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

从第三方 DLL 调用 Qt 中的函数在调试模式下工作,在发布模式下崩溃 的相关文章

  • Qt 相当于 .NET 数据绑定吗?

    Qt 中是否有相当于 NET 数据绑定的功能 我想使用引用数据库中特定实体的 QString 填充一些组合框和其他小部件 但是 如果我可以将数据绑定到这些字符串 而不是基于新的组合框选择再次查询数据库 或者基于构建我自己的将使用 QStri
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在不声明 32 个插槽的情况下将 32 个按钮的 pressed() 信号连接到单个函数?

    我有一个小部件 里面有 32 个按钮 我需要将每个按钮的 Pressed 信号连接到一个插槽 以便调用一个函数 该函数的参数取决于我按下的按钮 现在我通过以 on QPushButtonName pressed 的形式添加 32 个插槽来做
  • QML 圆规

    我目前正在创建一个虚拟仪表板 我想获得针后面的进度条类型 如以下链接所示 https forum qt io topic 89307 qml circular gauge styling needle trailing colour glo
  • 无法加载 DLL“tensorflow”或其依赖项之一(ML.NET)

    我有一个用于图像分类的 NET Core 3 应用程序 使用 Microsoft 的 ML NET 框架 在我的开发机器上 我可以运行代码并且一切正常 但是 当我将其部署到临时服务器时 我在运行时收到此错误 System Reflectio
  • 如何为QTableView中的当前项目设置样式表

    When QTableView编辑控件对于发生编辑的当前项目可见 当窗口中没有活动的编辑控件时QTableView当前项目的样式使用QTableView selection background color 如何只为当前项目设置不同的样式
  • 我如何获得 Windows 版 libmemcached?

    我正在尝试在我的 Windows 本地主机中安装 memcached 扩展 wamp 64 php 5 5 12 请参阅 memcached https pecl php net package memcached https pecl p
  • 仅使 QTreeWidgetItem 的一列可编辑

    我有一个QTreeWidgetItem有两列数据 有什么办法可以只让第二列可编辑吗 当我执行以下操作时 QTreeWidgetItem item new QTreeWidgetItem item gt setFlags item gt fl
  • 如何使用 Qt/C++ 创建/读取/写入文件并将设置存储在程序本地

    我是一个不幸的 C 初学者 使用 Qt GUI 设计器程序似乎非常适合我的需求 但我在尝试编写所需的代码时遇到了问题 我可以使用 QSettings 字符串在硬盘驱动器上存储本地设置 但我个人讨厌程序执行某些程序所做的 HOME LOCAL
  • 如何释放Qthread对象的内存?

    我做过这样的事情 in the mainwindow s constructor QThread thr new QThread soundWorker work new soundWorker connect this SIGNAL pl
  • 无法在 Qt Creator 中检索调试输出

    在 Windows 上的 Qt Creator 中 qDebug 语句不起作用 并且输出窗口中出现以下消息 无法检索调试输出 如何解决 如果多个 Qt Creator 实例处于活动状态 则可能会出现此问题 要解决此问题 只需关闭 Qt Cr
  • 在 C# 中使用 COM dll

    我们有用 C 编写的 COM dll 并已被用 vb 6 0 编写的应用程序使用 我的公司计划在 Net 平台上编写新版本的应用程序 就性能而言 在 C 项目中使用 COM dll 时 我应该从下面列出的 3 个选项中选择什么 只需添加 d
  • 找不到 PySide SVG 图像格式?

    我正在使用 Eclipse 的 PyDev 插件与 Qt 集成 我安装了 PySide 但在使用 SVG 图像格式时遇到问题 我知道当我运行我的应用程序时 格式位于C Python27 Lib site packages PySide pl
  • Objective C iPhone 何时将对象引用设置为 nil

    我使用 Objective C 和 Cocoa 框架进行开发已经有一段时间了 然而 我仍然不太清楚 我什么时候应该将对象引用设置为 nil 我知道建议在释放具有委托的对象之前执行此操作 并且您还应该在保留子视图的 viewDidUnload
  • Row 和 RowLayout 有什么区别?

    这按预期工作Row 但不与RowLayout 为什么 两者有什么区别 ApplicationWindow title Testing width 640 height 480 RowLayout Row anchors fill paren
  • 如何将 qmake 转换为 cmake?

    我有一个 pro我的项目上的文件 但现在我想将其移植到CMakeLists txt文件 我怎样才能做到这一点 QT core QT gui CONFIG c 11 TARGET test CONFIG console CONFIG app
  • QTextEdit:仅当滚动条位于底部时自动向下滚动

    有一个 QTextEdit 显示相当多的文本 它不可编辑 假设我想在开头阅读一些内容 向上滚动 但随后添加了一个新行 并且滚动条自动转到底部 我在使用各种程序时遇到类似的问题 无论它们是用什么语言编写的 如何处理这个问题 当向文本添加新行时
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • Qt 模型/视图与标准小部件

    我目前正在阅读模型 视图tutorial http qt project org doc qt 4 8 modelview html来自 Qt 但我仍然不确定是否应该为我的 Qt 程序使用模型 视图或小部件 我需要做一个记录器应用程序来监视

随机推荐