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

Linux构建QuantLib C#封装运行示例时无法加载NQuantLibc共享库

修复方案

报错本质是Linux动态链接器、.NET运行时都没检索到libNQuantLibc.so的存放路径,手动复制文件、无参数执行ldconfig不生效,都是因为没把库所在路径纳入系统和运行时的搜索范围,按以下步骤操作:

  • 定位核心库存放路径
    执行命令查找SWIG编译生成的C#原生绑定库位置:
    find / -name "libNQuantLibc.so" 2>/dev/null
    执行ls /usr/local/lib | grep libQuantLib确认QuantLib核心库存在,正常应能看到libQuantLib.so.1.21等相关文件。
  • 配置系统动态链接器搜索规则
    先删除之前手动复制到各个目录的零散libNQuantLibc.so文件,避免版本冲突。新建链接器配置文件写入库存放路径:
    # 将<libNQuantLibc所在目录>替换为上一步find命令查到的实际文件夹路径
    sudo echo "<libNQuantLibc所在目录>" > /etc/ld.so.conf.d/quantlib.conf
    sudo echo "/usr/local/lib" >> /etc/ld.so.conf.d/quantlib.conf
    sudo ldconfig
    
    注意配置里只写文件夹路径,不要写具体so文件名。
  • 配置.NET运行时原生库搜索路径
    进入examples/BermudanSwaption项目目录,新建BermudanSwaption.runtimeconfig.json文件,写入以下内容(替换为实际路径):
    {
      "runtimeOptions": {
        "additionalProbingPaths": [
          "<libNQuantLibc所在目录>",
          "/usr/local/lib"
        ]
      }
    }
    
  • 验证修复
    可先在当前终端临时指定动态库路径快速验证:
    export LD_LIBRARY_PATH=<libNQuantLibc所在目录>:/usr/local/lib:$LD_LIBRARY_PATH
    dotnet run --project examples/BermudanSwaption/BermudanSwaption.csproj
    
    如果临时指定路径后能正常运行,新开终端执行报错,直接回去检查第二步ldconfig配置里的路径是否写错。
  • 异常排查
    以上操作无效时,进入libNQuantLibc.so所在目录执行ldd libNQuantLibc.so,查看输出中是否存在标记为not found的依赖项,把对应依赖所在目录加入ldconfig配置后重新执行ldconfig即可。

内容的提问来源于stack exchange,提问作者Eduardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:01:26