【问题标题】:Qt 5.1 - Runtime crashQt 5.1 - 运行时崩溃
【发布时间】:2013-08-26 01:13:09
【问题描述】:

尝试从 Qt 5.1 构建示例程序,我收到此运行时错误:

Starting /Users/pietro/myProgs/ParamGUI/build-6_treeview-Desktop_Qt_5_1_0_clang_64bit-Debug/mv_tree.app/Contents/MacOS/mv_tree...
dyld: Library not loaded: /Users/bld.qt/bamboo-agent-home/xml-data/build-dir/DQTC-LGPLRELEASEBUILD510-OSX106/______________________________PADDING______________________________/lib/QtWidgets.framework/Versions/5/QtWidgets
  Referenced from: /Users/pietro/myProgs/ParamGUI/build-6_treeview-Desktop_Qt_5_1_0_clang_64bit-Debug/mv_tree.app/Contents/MacOS/mv_tree
  Reason: image not found
The program has unexpectedly finished.
/Users/pietro/myProgs/ParamGUI/build-6_treeview-Desktop_Qt_5_1_0_clang_64bit-Debug/mv_tree.app/Contents/MacOS/mv_tree exited with code 0

使用调试器启动程序,在 main() 的第一条指令处有一个断点,我收到以下错误消息(相对于二进制代码位置):

The inferior stopped because it received a signal from the Operating System.  
Signal name: SIGTRAP
Signal meaning: Trace/breakpoint trap

我不知道如何解决它。
该示例是从 Qt 文档创建树视图的简单示例。 在我指定的 qmake 文件中:QT += widgets

错误Reason: image not found 不是指位图图像,是吗?

我错了,还是很多人对 Qt5 有问题?

平台:Qt 5.1、Mac OS-X 10.7、QtCreator 2.7.2

--- 新测试 ---
相同环境下:
- “普通 C++ 项目(CMake 构建)”工作正常。
- “Qt 控制台应用程序”与此问题中提到的应用程序具有相同的问题。

--- 项目源代码---

专业文件:

QT += core
QT -= gui
TARGET  = Qt5Test2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp

main.cpp 文件:

#include <QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    return a.exec();
}

【问题讨论】:

  • Reason: image not found 绝对不是指位图图像。你试过谷歌吗?这些可能会有所帮助:here 和 here
  • 尝试做一个非常基本的应用程序;在 Qt Creator 中创建一个新的 GUI 应用程序,编译并运行它。那样有用吗?注意:我在 OSX 10.8.4 上使用 Qt 5.1 没有任何问题。
  • @KurtPattyn:这正是我所做的,我从 Qt 的示例目录中获取了一个测试项目。
  • @Pietro 不做样例项目,在Qt Creator中新建一个即可;通过这种方式,我们可以确定问题是与示例应用有关还是结构性问题。

标签: macos qt crash qt5


【解决方案1】:

问题是您的 Qt 文件不在链接器在可执行文件中声明的位置。

在您的可执行文件上检查以下命令的结果:

otool -L /Users/pietro/myProgs/ParamGUI/build-6_treeview-Desktop_Qt_5_1_0_clang_64bit-Debug/mv_tree.app/Contents/MacOS/mv_tree...

它将显示如下内容:

/Users/pietro/myProgs/ParamGUI/build-6_treeview-Desktop_Qt_5_1_0_clang_64bit-Debug/mv_tree.app/Contents/MacOS/mv_tree...:
    /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 153.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    <CUT OUT>/QtCore.framework/QtCore (compatibility version 5.1.0, current version 5.1.1)
   ...

对于它的所有依赖,依此类推。

在你的情况下,它需要QtWidgets 在这里:

/Users/bld.qt/bamboo-agent-home/xml-data/build-dir/DQTC-LGPLRELEASEBUILD510-OSX106/______________________________PADDING______________________________/lib/QtWidgets.framework/Versions/5/QtWidgets

它是否存在于那个位置?如果没有,则将其放在那里,或者使用install_name_tool 更改可执行文件以指向正确的位置。

在后一种解决方案中,您必须这样做:

install_name_tool -change /Users/bld.qt/bamboo-agent-home/xml-data/build-dir/DQTC-LGPLRELEASEBUILD510-OSX106/______________________________PADDING______________________________/lib/QtWidgets.framework/Versions/5/QtWidgets <THE PATH TO YOUR QtWidgets> <THE PATH TO YOUR EXECUTABLE>

之后在可执行文件上执行otool -L 以确认它。然后重新运行应用程序。

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多