首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接(加载?)QT应用程序出错

链接(加载?)QT应用程序出错
EN

Stack Overflow用户
提问于 2016-04-30 04:26:37
回答 1查看 314关注 0票数 1

编译一个使用图形库的基于QT的示例应用程序后,当我尝试运行该应用程序时收到以下错误:

代码语言:javascript
运行
复制
./basic_dyn 
./basic_dyn: symbol lookup error: /qanava-0.4/lib/libqanava.so.0.4.0: undefined symbol: _ZNK18QAbstractListModel7siblingEiiRK11QModelIndex

在过去,我见过这些错误是由于未能链接到适当的库中而导致的。因此,鉴于错误是如何来自图形库的,我对库中的名称进行了快速检查:

代码语言:javascript
运行
复制
nm libqanava.so.0.4.0 | grep QAbstractListModel
    U _ZN18QAbstractListModel11qt_metacallEN11QMetaObject4CallEiPPv
    U _ZN18QAbstractListModel11qt_metacastEPKc
    [[ .... several list of output removed ....]]
    U _ZNK18QAbstractListModel6parentERK11QModelIndex
    U _ZNK18QAbstractListModel7siblingEiiRK11QModelIndex
    U _ZTI18QAbstractListModel

从中我们可以看到,违规函数(_ZNK18QAbstractListModel7siblingEiiRK11QModelIndex)确实存在于库中。重复名称提取,这一次打开名称分离,给出;

代码语言:javascript
运行
复制
nm -C libqanava.so.0.4.0 | grep QAbstractListModel
    U QAbstractListModel::qt_metacall(QMetaObject::Call, int, void**)
    U QAbstractListModel::qt_metacast(char const*)
    [[ .... several lines removed .... ]]
    U QAbstractListModel::parent(QModelIndex const&) const
    U QAbstractListModel::sibling(int, int, QModelIndex const&) const
    U typeinfo for QAbstractListModel

因此,我们可以看到该函数是QAbstractListModel::sibling。参考QT文档,这个类似乎是Qt5Core库的一部分。实际上,查看从Qt5Core导出的函数,我们会发现:

代码语言:javascript
运行
复制
nm -C libQt5Core.so.5.5.1 | grep QAbstractListModel
  0000000000503a40 r qt_meta_data_QAbstractListModel
     [[ .... many lines deleted .... ]]
  00000000002257c0 T QAbstractListModel::parent(QModelIndex const&) const
  00000000002257f0 T QAbstractListModel::sibling(int, int, QModelIndex const&) const
  000000000059f850 V typeinfo for QAbstractListModel

因此,攻击性函数是从Qt5Core导出的。并且,我期望符号被定义。

应用程序被编译为,我们可以看到libQt5Core被链接到:

代码语言:javascript
运行
复制
g++ moc_canMainWindow.o canApp.o canMainWindow.o -L/usr/X11R6/lib -L/opt /qt5/lib 
-L../../lib -lQt5Gui -lQt5Xml -lQt5Core -lQt5Widgets -lqanava -lpng -lfreetype -lSM 
-lICE   -lXext -lX11  -lz -lm -pthread  -lrt -ldl -o basic_dyn

因此,适当的QT库在命令行上,我本以为符号已经被解析了。在命令行上更改库的顺序(更改为-lqanava -lQt5Gui -lQt5Xml -lQt5Core -lQt5Widgets)对结果没有影响。

我不知所措,据我所知,我希望符号被解析,应用程序将运行。任何人都有关于这里发生的事情的解释,以及如何修复this>的建议

EN

回答 1

Stack Overflow用户

发布于 2016-07-30 07:10:19

很可能你不会太高兴,因为我不能给你一个简洁的答案,但我有完全相同的错误,事实上你的错误-msg是我的搜索词(=未定义的符号:_ZNK18QAbstractListModel7siblingEiiRK11QModelIndex).这就是我来到这里的原因。因此,我的“解决方案”可能会给你一个提示,让你找到问题的解决方案。

在进行了大量乏味的试错之后,我意识到CPU/GPU的使用率在这个错误发生之前立即上升了。压力和过载,这似乎是原因。因此,我缩小了屏幕分辨率,并为GPU提供了更多的RAM (这是在Raspberry Pi 2上)。等一下,这个错误就消失了。换句话说,我打包了这头牛,直到它能走得更远。解决方案:更少的负载。希望这在某种程度上是有意义的,并让你更接近一个解决方案。欢迎光临。

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

https://stackoverflow.com/questions/36946911

复制
相关文章

相似问题

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