Qt5:Poppler奇怪的链接器错误

时间:2014-03-20 14:29:18

标签: c++ windows qt linker-errors poppler

我从this page下载了预先构建的win32 poppler二进制文件。在.pro文件中添加了include文件夹和lib文件夹的路径:

INCLUDEPATH += "C:\\test_folder\\poppler-0.24.5-win32\\include\\poppler-qt5"
LIBS += -L/"C:\\test_folder\\poppler-0.24.5-win32\\lib"

在main.cpp中我包括" poppler-qt5.h"没有错误,所以我认为poppler被正确添加。但是,在通过打开pdf文件as described here

进行测试时
QString path = "C:\\Windows\\System32\\spool\\PRINTERS\\test_file.pdf";
Poppler::Document *doc = Poppler::Document::load(path);

我收到链接器错误:

Error message

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我在你的LIBS专栏中缺少-l

LIBS += -L/"C:\\test_folder\\poppler-0.24.5-win32\\lib" -lpoppler-qt5

最终重命名lib,因为.dll.a不是Windows中的标准扩展名。

编辑:无需重命名库即可正常工作:

.pro文件:

INCLUDEPATH += $$quote(D:\Users\username\Downloads\poppler-0.24.5-win32\poppler-0.24.5-win32\include\poppler-qt5)
LIBS += -L$$quote(D:\Users\username\Downloads\poppler-0.24.5-win32\poppler-0.24.5-win32\lib) -lpoppler-qt5

.cpp文件:

#include <QApplication>
#include <mycpp.h>

#include <poppler-qt5.h>

/* Some Code here */
QString path = "D:\\SomePDF.pdf";
Poppler::Document *doc = Poppler::Document::load(path);
/* More Code here */

答案 1 :(得分:0)

我遇到了同样的问题,我用这种方法解决了这个问题:

如果在文件夹\ poppler-0.24.5-win32 \ bin \中找到Qt生成可执行文件的文件夹,则复制dll文件。然后下载zlib1.dll并将此dll插入到Qt生成可执行文件的文件夹中。现在试试。 这适合我。我在Windows XP SP3中用qt 5.3编译。