编译一个使用图形库的基于QT的示例应用程序后,当我尝试运行该应用程序时收到以下错误:
./basic_dyn 
./basic_dyn: symbol lookup error: /qanava-0.4/lib/libqanava.so.0.4.0: undefined symbol: _ZNK18QAbstractListModel7siblingEiiRK11QModelIndex在过去,我见过这些错误是由于未能链接到适当的库中而导致的。因此,鉴于错误是如何来自图形库的,我对库中的名称进行了快速检查:
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)确实存在于库中。重复名称提取,这一次打开名称分离,给出;
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导出的函数,我们会发现:
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被链接到:
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>的建议
发布于 2016-07-30 07:10:19
很可能你不会太高兴,因为我不能给你一个简洁的答案,但我有完全相同的错误,事实上你的错误-msg是我的搜索词(=未定义的符号:_ZNK18QAbstractListModel7siblingEiiRK11QModelIndex).这就是我来到这里的原因。因此,我的“解决方案”可能会给你一个提示,让你找到问题的解决方案。
在进行了大量乏味的试错之后,我意识到CPU/GPU的使用率在这个错误发生之前立即上升了。压力和过载,这似乎是原因。因此,我缩小了屏幕分辨率,并为GPU提供了更多的RAM (这是在Raspberry Pi 2上)。等一下,这个错误就消失了。换句话说,我打包了这头牛,直到它能走得更远。解决方案:更少的负载。希望这在某种程度上是有意义的,并让你更接近一个解决方案。欢迎光临。
https://stackoverflow.com/questions/36946911
复制相似问题