0

我对 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;
    }
4

1 回答 1

0

在 Code::Blocks 中,右键单击项目名称并选择“Build Options...”。在最左侧的菜单中选择项目名称的选项(应该是第一个选项),然后单击“链接器设置”。现在按“添加”按钮并浏览到您的 DLL 文件,然后按“确定”。

要允许包含库的头文件(无需在源代码中写下完整路径),您应该告诉将它们的位置添加到编译器的包含路径中。您可以在同一窗口的“搜索目录”选项卡上执行此操作。确保选择了“编译器”子选项卡,然后按“添加”。浏览到包含头文件的目录,然后按“确定”。

希望这可以帮助。

于 2013-04-23T19:26:01.200 回答