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

Azure Function调用DataLogics PDFL报错:无法加载DL150PDFLPINVOKE DLL

解决Azure Function中Datalogics PDFL无法加载原生DLL的问题

这个问题我之前帮团队排查过,核心原因是Datalogics PDFL依赖的原生非托管DLL没有被正确部署到Azure Function的运行环境中——控制台应用会自动复制这类依赖,但Azure Function的部署机制有差异,不会默认包含非托管的原生文件。下面是一步步的解决办法:

1. 确保原生DLL被复制到输出目录

Datalogics的NuGet包里会在runtimes目录下存放对应架构的原生DLL(比如runtimes/win-x64/native/DL150PDFLPINVOKE.dll),你需要让这些文件随项目编译一起输出:

  • 在Visual Studio中,找到项目里引用的该DLL(如果没显示,可点击「显示所有文件」找到NuGet包目录下的文件)
  • 右键DLL选择「属性」,将「复制到输出目录」设置为「始终复制」或「如果较新则复制」
  • 如果你用的是.NET Core/.NET 6+,也可以直接在.csproj里添加配置强制复制:
    <ItemGroup>
      <None Include="$(NuGetPackageRoot)datalogics.pdfl\**\win-x64\native\DL150PDFLPINVOKE.dll">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </None>
    </ItemGroup>
    
    记得替换路径中的版本号为你实际使用的PDFL NuGet版本。

2. 匹配Azure Function的运行时架构

原生DLL分x86和x64版本,Azure Function默认可能用x86,如果你本地用的是x64版本的PDFL,必须调整:

  • 登录Azure门户,打开你的Function App
  • 进入「配置」→「常规设置」
  • 将「平台」改为「64位」,保存后重启Function App

3. 验证部署包包含原生DLL

无论是用Visual Studio发布还是Zip部署,都要确认最终的部署包bin目录下存在DL150PDFLPINVOKE.dll:

  • 本地编译后,检查bin/Debug/net6.0(或对应版本)目录是否有该DLL
  • 如果用Zip部署,解压Zip包确认文件存在;如果用Visual Studio发布,可在发布预览里查看是否包含该文件

4. 对齐.NET运行时版本

确保Azure Function使用的.NET版本和你本地控制台应用完全一致——比如本地用.NET 6,Azure那边就要设置为.NET 6的运行时,避免因版本不兼容导致的DLL加载失败。

如果以上步骤都试过还是不行,可以检查Azure Function的日志(在「监测」→「日志流」里),看是否有更详细的加载失败信息,比如是否还有其他依赖的DLL缺失。

内容的提问来源于stack exchange,提问作者Kunal Kumar Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:16