我对c++编程比较陌生,虽然我在一般编码实践,惯例等方面有一些经验…最近我的(有限的)知识到了悬崖边。
基本上我想写一个程序,允许我从PDF文件中提取注释。经过一番研究,我发现波普勒图书馆允许我这样做。因此,我下载了它,并开始了在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文件和原始源目录(即poppler-0.22.2)中的.h文件。
现在我的问题是我需要在我的main.cpp中写什么,这样我就可以使用Poppler功能。一开始我只是写:
#include "poppler.h"
然而,这返回一个"No such file or directory"错误。然后我试了:
#include "poppler-qt4.h"
然后执行,但是我后来在代码中被告知"poppler"没有被声明。然后我试了:
#include "poppler-qt4.h"
#include "C:Users...poppler-0.22.2cpppoppler-document.h"
然后返回"未定义的引用'imp_ZN7poppler8document14load_from_fileERKsS2_S2_'"错误…
所以这就是我现在的位置,我完全不知道我应该如何继续,我希望有人能通过我需要采取的步骤来让Poppler工作,即我如何让库链接,如果这确实是问题,或者我如何克服"imp_"错误。对于这个问题我真的是束手无策了。
事先感谢你方提供的任何帮助。
注:My main.cpp至今:
#include <iostream>
//#include "poppler.h"
#include "poppler-qt4.h"
#include "C:Users...poppler-0.22.2cpppoppler-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;
}
在Code::Blocks中,右键单击项目名称并选择"Build Options…"。在最左边的菜单中选择项目名称(应该是第一个选项),然后单击"链接器设置"。现在按"添加"按钮,浏览到您的DLL文件,然后按"确定"。
要允许包含库的头文件(不需要在源代码中写下完整的路径),您应该告诉将它们的位置添加到编译器的include路径中。您可以在同一窗口的"搜索目录"选项卡上进行此操作。确保选择"编译器"子选项卡并按"添加"。浏览到包含头文件的目录,按"Ok"键。