You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Unity 5.5.6f1原生插件失效:DllNotFoundException报错求助

解决Unity中SQLite.Interop.dll的DllNotFoundException问题

我之前在Unity集成SQLite插件时也遇到过一模一样的问题,核心原因是Unity对非托管原生插件的目录结构和平台配置有严格要求,默认不会自动识别你原来的x86/x64目录结构。下面是经过验证的解决方案:

1. 调整插件目录结构

首先把你的文件重新组织成Unity能正确识别的结构:

Assets/Plugins/MyPlugin
├─ MyPlugin.dll
├─ System.Data.SQLite.dll
├─ (其他托管依赖文件)
└─ Windows
   ├─ x86
   │  └─ SQLite.Interop.dll
   └─ x64
      └─ SQLite.Interop.dll

把x86和x64文件夹放到Windows子目录下,让Unity明确这是Windows平台的原生插件。

2. 配置原生插件的平台属性

这一步是关键,必须给每个SQLite.Interop.dll指定正确的平台架构:

  • 选中Windows/x86/SQLite.Interop.dll,在Inspector面板中:
    • 勾选EditorStandalone平台选项
    • 在"Platform Settings"里选择Windows,架构设置为x86
    • 取消所有其他平台的勾选(比如Mac、Linux等)
  • 同样处理Windows/x64/SQLite.Interop.dll
    • 勾选EditorStandalone平台选项
    • 平台选择Windows,架构设置为x86_64
    • 取消其他平台的勾选

3. 配置托管插件的属性

对于System.Data.SQLite.dll和你自己的MyPlugin.dll

  • 在Inspector面板中设置为Any Platform
  • 确保勾选Include in BuildAllow Scripting Runtime Version Change(如果需要的话)
  • 确认它们的"Scripting Backend"设置和你的项目一致(比如.NET Framework或.NET Core)

4. 额外排查要点

  • 版本匹配:确保System.Data.SQLite.dllSQLite.Interop.dll是同一版本的,版本不兼容也会触发找不到DLL的错误
  • 编辑器架构:如果你用的是64位Unity编辑器,要确认x64版本的SQLite.Interop.dll已经正确配置;32位编辑器则对应x86版本
  • 打包验证:打包Windows版本后,检查输出目录下是否有x86x64子目录,且里面包含对应的SQLite.Interop.dll(Unity会根据目标架构自动复制)
  • 避免手动加载:尽量不要在代码里手动调用DllImport指定路径,依赖Unity的插件系统自动管理加载逻辑更可靠

按照这些步骤配置后,Unity就能根据当前运行的平台架构自动加载正确的SQLite.Interop.dll,解决DllNotFoundException问题。

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

火山引擎 最新活动