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

macOS Mojave下SQLitePCLRaw加载'e_sqlite3'共享库失败求助

解决方案:macOS Mojave下SQLite加载失败问题

针对你遇到的基于C# EF Core + SQLite的跨平台应用在macOS Mojave(10.14)上抛出System.DllNotFoundException找不到e_sqlite3的问题,以下是几个可行的解决方向:

1. 回退到兼容旧macOS版本的SQLitePCLRaw包

新版SQLitePCLRaw(如2.1.x及以上)可能已放弃对macOS 10.14的支持,建议回退到明确支持该系统的版本:

  • 卸载当前的SQLitePCLRaw.bundle_*系列包
  • 安装SQLitePCLRaw.bundle_green 2.0.7版本(该版本明确兼容macOS 10.14)
  • 确保所有相关SQLitePCLRaw依赖包(如SQLitePCLRaw.core、SQLitePCLRaw.provider.e_sqlite3)的版本与bundle包完全一致,避免版本不匹配导致的加载问题

2. 手动嵌入兼容旧系统的e_sqlite3库

如果回退版本无效,可自行提供适配macOS 10.14的libe_sqlite3.dylib:

  • 下载或编译针对macOS 10.14 x64架构编译的libe_sqlite3.dylib(确保最低部署目标为10.14)
  • 将该文件添加到项目中,设置复制到输出目录为“如果较新则复制”
  • 在应用启动时,先设置库加载路径,再初始化SQLite:
    // 设置DYLD_LIBRARY_PATH指向应用根目录
    Environment.SetEnvironmentVariable("DYLD_LIBRARY_PATH", AppContext.BaseDirectory);
    // 初始化SQLite
    SQLitePCL.Batteries_V2.Init();
    

3. 切换使用系统自带的SQLite库

用户系统已安装SQLite 3.24.0(满足EF Core最低要求3.13.0),可直接复用系统库:

  • 卸载所有SQLitePCLRaw.bundle_*和SQLitePCLRaw.provider.e_sqlite3包
  • 安装SQLitePCLRaw.provider.sqlite3包(该包绑定系统自带的sqlite3)
  • 修改初始化代码为:
    SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3());
    SQLitePCL.Batteries_V2.Init();
    

4. 确保应用编译包含x64架构

Mojave多运行在Intel芯片设备上,若应用仅编译了arm64架构,会导致库加载失败:

  • 在项目文件(.csproj)中添加RuntimeIdentifiers配置:
    <PropertyGroup>
      <RuntimeIdentifiers>osx-x64;osx-arm64</RuntimeIdentifiers>
    </PropertyGroup>
    
  • 发布应用时选择osx-x64架构,或选择通用架构发布,确保在Intel设备上能加载对应的原生库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:32:38