我对 C++ 编程比较陌生,虽然我在一般编码实践、约定等方面有一些经验……但最近我对我的(有限的)知识有了一定的了解。
基本上我希望编写一个程序,允许我从 PDF 文件中提取注释。通过一些研究,我发现 Poppler 库允许我这样做。所以我下载了它并开始了在 Windows Vista 上为 CodeBlocks (MinGW) 构建它的艰巨过程。
对于那些感兴趣的人,以下站点提供了有关使用 Cmake 构建 Poppler 的宝贵信息:
http://www.seppemagiels.com/blog/building-poppler-windows-using-mingw >
无论如何,进入我目前的困境。遵循 Cmake 的源代码约定后,我有一个像这样的文件结构:
...\工作\
.............poppler-0.22.2
.............poppler-0.22.2_Build
在“poppler-0.22.2_Build”文件夹中有一个“libpoppler.dll.a”文件,我被认为是一个库文件夹。然后我按照此处所述的说明进行操作:
http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/
然后我链接到“poppler-0.22.2_Build”目录中的 libpoppler.dll.a 文件和原始源目录中的 .h 文件(即 poppler-0.22.2)。
现在我的问题是我需要在 main.cpp 中写什么,这样我才能使用 Poppler 功能。起初我只是写道:
#include "poppler.h"
但是,这会返回“没有这样的文件或目录”错误。然后我尝试了:
#include "poppler-qt4.h"
然后执行,但是后来我在我的代码中被告知“poppler”没有被声明。然后我尝试了:
#include "poppler-qt4.h"
#include "C:\Users\...\poppler-0.22.2\cpp\poppler-document.h"
然后返回“对' imp _ZN7poppler8document14load_from_fileERKsS2_S2_'的未定义引用”错误...
所以这就是我现在所处的位置,我完全不知道我应该如何继续,我希望有人可以指导我完成让 Poppler 工作所需的步骤,即我如何让库链接,如果这确实是问题所在,或者我该如何克服“ imp _”错误。我真的对这个问题束手无策......
提前感谢您提供的任何帮助。
PS到目前为止我的main.cpp:
#include <iostream>
//#include "poppler.h"
#include "poppler-qt4.h"
#include "C:\Users\...\poppler-0.22.2\cpp\poppler-document.h"
using namespace std;
int main()
{
const string dir = "C:\\Users\\...\\TestPDF.pdf";
poppler::document *doc = poppler::document::load_from_file(dir)
return 0;
}