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

树莓派上SQLite.Interop.dll加载异常问题求助

树莓派armv7l上.NET Core 3.1 SQLite部署异常修复

问题根源

你遇到的System.EntryPointNotFoundException和System.DllNotFoundException本质是SQLite互操作库(SQLite.Interop.dll)的架构不匹配、版本不一致,或者部署时未正确包含导致的。你的树莓派是armv7l架构,对应.NET的runtime identifier是linux-arm,必须匹配这个架构的库。

具体解决步骤

  • 确认NuGet包版本一致性
    先检查项目里引用的SQLite相关包(Microsoft.Data.Sqlite或System.Data.SQLite)版本,确保所有依赖的SQLite类库版本统一,版本不匹配是常见的异常诱因。

  • 提取对应架构的官方Interop库
    别随便找第三方下载,直接从你项目依赖的NuGet包中提取:

    1. 找到本地NuGet缓存目录(Windows下是C:\Users\<你的用户名>\.nuget\packages,Linux/macOS是~/.nuget/packages)
    2. 定位到对应的SQLite包(比如system.data.sqlite或sqlitepclraw.libsqlite3.linux-arm)
    3. 进入runtimes/linux-arm/native目录,复制里面的SQLite.Interop.dll到树莓派上的程序目录,或者放在程序目录下的runtimes/linux-arm/native子文件夹里(.NET会自动加载这个路径的库)
  • 修正发布命令
    你之前的命令有误,正确的发布命令应该是:

    dotnet publish -c Release -r linux-arm --self-contained false
    

    (如果要独立部署,把--self-contained改成true)。指定-r linux-arm会让NuBuild自动打包对应架构的Interop库,避免手动复制的麻烦。

  • 系统依赖与权限检查

    1. 在树莓派上安装SQLite系统依赖:
      sudo apt-get update && sudo apt-get install libsqlite3-dev -y
      
    2. 给复制过去的SQLite.Interop.dll加可执行权限:
      chmod +x /path/to/your/app/SQLite.Interop.dll
      
  • 验证架构匹配
    把库传到树莓派后,用以下命令检查架构是否正确:

    file SQLite.Interop.dll
    

    输出应该包含ARM, EABI5 version 1 (SYSV),这才是armv7l兼容的版本。如果显示arm64,说明你拿错了库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:35:23