You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用gn gen构建PDFium后缺失pdfium.dll,求成功构建经验分享

解决PDFium构建后未生成pdfium.dll的问题

我之前构建PDFium时也碰到过一模一样的情况!一堆零散的DLL但核心的pdfium.dll就是找不到,折腾了好一阵才搞定,分享几个我踩过的坑和解决办法:

1. 检查GN构建参数是否正确

PDFium的构建行为完全由GN参数控制,最关键的就是是否生成共享库的配置:

  • 打开你的构建目录的GN参数配置:gn args out/[你的构建目录名]
  • 确保里面有这一行:pdfium_is_shared_library = true
    如果没有,添加它并保存,然后重新运行构建命令。
  • 另外,is_component_build这个参数也会影响模块拆分,如果设为true可能会把功能拆成多个小DLL,如果你想要单一的pdfium.dll,可以尝试把它设为false(注意要和pdfium_is_shared_library配合使用)

2. 明确指定构建核心库目标

默认运行ninja可能会构建所有模块(包括测试工具、辅助组件),但不一定会单独打包核心的pdfium.dll。你可以直接指定构建目标:

ninja -C out/[你的构建目录名] pdfium

这个命令会专门构建核心的PDFium库,完成后去对应目录里找,大概率就能看到pdfium.dll了。

3. 确认构建目录和配置匹配

别搞混了Debug/Release或者x86/x64架构!比如你生成的是Release版本,就去out/Release目录找;如果是x86架构,要确认GN参数里target_cpu = "x86",然后去对应的架构目录下查找,不要在x64目录里瞎找。

4. 验证函数是否在其他DLL中(极端情况)

虽然你提到的FPDFAvail_GetDocument()、FPDFBitmap_GetBuffer()这些都是核心API,但万一遇到模块拆分的情况,可以用工具检查导出函数:

  • 用Windows的dumpbin工具:dumpbin /exports [某个DLL路径]
  • 或者用Dependency Walker这类可视化工具,查看每个DLL的导出函数列表,确认这些API是否存在于某个DLL中(不过正常情况应该都在pdfium.dll里)

附:我常用的完整构建流程

给你一个我每次都能成功生成pdfium.dll的步骤,你可以对照着走一遍:

  1. 确保depot_tools已经配置好并加入环境变量
  2. 获取PDFium代码并同步依赖:
    gclient config --unmanaged https://pdfium.googlesource.com/pdfium.git
    gclient sync
    
  3. 生成Release版本的构建文件(带共享库):
    gn gen out/Release --args="is_debug=false pdfium_is_shared_library=true target_cpu=\"x64\""
    
  4. 构建核心库:
    ninja -C out/Release pdfium
    

完成后去out/Release目录,就能找到pdfium.dll和对应的pdfium.lib了。

内容的提问来源于stack exchange,提问作者J. Nee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:43:35