在Qt5中与poppler链接时出错

时间:2015-03-28 15:30:54

标签: c++ linux qt5 poppler

  

/usr/lib/libpoppler.so.50:对std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20' Makefile:156: recipe for target 'DocViewer' failed /usr/lib/libsystemd.so.0: undefined reference to lzma_stream_decoder@XZ_5.0'的未定义引用   /usr/lib/libQt5Core.so:对__cxa_throw_bad_array_new_length@CXXABI_1.3.8' /usr/lib/libsystemd.so.0: undefined reference to lzma_end@XZ_5.0'的未定义引用   /usr/lib/libsystemd.so.0:未定义的引用`lzma_code@XZ_5.0'   collect2:错误:ld返回1退出状态   make:*** [DocViewer]错误1   20:53:35:进程“/ usr / bin / make”退出代码2。

我在使用poppler中的Qt5编译程序时收到上述错误。

下面是我的项目文件,应该改变什么?

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = DocViewer
TEMPLATE = app

INCLUDEPATH  += /usr/include/poppler/qt5
LIBS         += -L/usr/lib -lpoppler-qt5

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

1 个答案:

答案 0 :(得分:0)

对于libicu中的“__cxa_throw_bad_array_new_length@CXXABI_1.3.8”错误,看起来问题是一个不兼容的icu构建(softfp vs hardfp)。

我遇到了同样的错误,我通过下载重建的ICU解决了这个错误(以避免自己重建)。

  • 从中下载“POT”二进制文件 http://thebugfreeblog.blogspot.fr/2016/12/binaries-for-pot-550-beta1-on-qt-580.html
  • lrzuntar文件
  • tar xf qtdeps.tar
  • 在设备上,移开libicu *(在我的情况下使用raspbian,它在usr / lib / arm-linux-gnueabihf中),并从那里的qtdeps传输libicu *
  • 在设备上,移开“unicode”包括dir(带有raspbian,它位于/ usr / include / arm-linux-gnueabihf / unicode),并从那里复制来自qtdeps的unicode include dir。
  • 使用rsync从设备重新同步到您的sysroot
  • 重新配置并重建qtbase(删除名称中包含“icu”的qtbase / src / corelib下的.o文件 - 或从头开始重建Qt)