我正在尝试使用Visual Studio 2013为pdfium
创建一个dll(如在Creating a dll in pdfium中),除了当我下载pdfium
项目时我设置了DEPOT_TOOLS_WIN_TOOLCHAIN=0
,因为现在默认情况下,他们使用depot_tools中的工具链。
但是在构建过程中我仍然遇到错误:
error LNK2019: unresolved external symbol _FPDF_BStr_Init referenced in function "public: class CFX_WideString __thiscall CPDFDoc_Environment::FFI_PostRequestURL(wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *)" (?FFI_PostRequestURL@CPDFDoc_Environment@@QAE?AVCFX_WideString@@PB_W0000@Z) ..\pdfium\fpdfxfa.lib(fpdfxfa_app.obj) pdfium
和类似_FPDF_BStr_Clear
error LNK2019: unresolved external symbol _FPDF_BStr_Clear referenced in function "public: class CFX_WideString __thiscall CPDFDoc_Environment::FFI_PostRequestURL( ...
我通过,它可能是xfa的问题,所以我尝试在没有它的情况下构建pdfium。我从此解决方案中的所有项目的预处理器定义中删除了PDF_ENABLE_XFA
,但后来我发现fxcodec和fxcrt在没有该定义的情况下不构建。
当我保留那些项目的定义时,我可以成功构建pdfium项目,但是当我在我的应用程序中使用它时,它会失败。
然后我尝试以不同的顺序执行它并获得了dll,但没有使用FPDFSDK_EXPORTS定义。当我添加它时,会出现这些错误。
答案 0 :(得分:1)
您无需编辑构建命令即可禁用XFA。运行gn args out/Debug
时,您可以添加pdf_enable_xfa=false
条目。您还可以使用pdf_enable_v8=false
停用V8。
最近添加了一个选项来构建PDF的完整库(尚未使用V8或XFA进行测试)。如果您添加pdf_is_complete_lib=true
并构建,则只需链接到生成的libpdfium。