gpt4 book ai didi

c# - Unity 5.5.6f1 - native 插件不起作用,错误 DllNotFoundException

转载 作者:行者123 更新时间:2023-12-01 21:38:55 27 4
gpt4 key购买 nike

我正在用 C# 编写一个使用 SQLite 的 Unity 插件。

SQLite 对 SQLite.Interop.dll 的依赖,据我了解这是一个非托管 DLL。

当我导出 Unity 插件时,有几个 DLL 文件与我的插件一起导出。

Bin folder
|
|_ MyPlugin.dll
|_ System.Data.SQLite.dll
|_ (other files)
|_ x86
| |_ SQLite.Interop.dll
|
|_ x64
| |_ SQLite.Interop.dll

在Unity游戏项目中使用时,我将所有文件放在Assets/Plugins/MyPlugin下,如下:

Assets
|
|_ Plugins
|_ MyPlugin
|_ MyPlugin.dll
|_ System.Data.SQLite.dll
|_ (other files)
|_ SQLite.Interop.dll (x64 version)

在Unity编辑器中,一切正常,我可以建立SQLite连接并进行事务。

但是,当将 Unity 项目导出到 Windows x64 的独立应用程序时,它不起作用,并且会抛出 DllNotFoundException 错误。

System.DllNotFoundException: SQLite.Interop.dll
at (wrapper managed-to-native) System.Data.SQLite.UnsafeNativeMethods:sqlite3_config_none (System.Data.SQLite.SQLiteConfigOpsEnum)
at System.Data.SQLite.SQLite3.StaticIsInitialized () [0x00000] in <filename unknown>:0
at System.Data.SQLite.SQLiteLog.Initialize () [0x00000] in <filename unknown>:0
at System.Data.SQLite.SQLiteConnection..ctor (System.String connectionString, Boolean parseViaFramework) [0x00000] in <filename unknown>:0
at System.Data.SQLite.SQLiteConnection..ctor (System.String connectionString) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Data.SQLite.SQLiteConnection:.ctor (string)
at MyPlugin.Service.Util.SqliteBase.InitConnection () [0x00000] in <filename unknown>:0
at MyPlugin.Service.Util.SqliteBase.OpenConnection () [0x00000] in <filename unknown>:0

独立应用程序的文件夹结构如下:

Output
|_ UnityApp.exe
|_ UnityApp_Data
|
|_ Managed
| |_ MyPlugin.dll
| |_ System.Data.SQLite.dll
| |_ (other DLLs)
|
|_ Plugins
|_ SQLite.Intedrop.dll

DLL 在那里,但 Unity 似乎找不到它。

我在这里找到了修改PATH环境变量的解决方案https://stackoverflow.com/a/33124250

它可以工作,但我想知道我的配置是否有问题,或者是否有任何原因导致 Unity 不加载 SQLite.Intedrop.dll,尽管它存在于应用程序数据文件夹中。

非常感谢您的帮助。

编辑1:SQLite DLL是通过NUGET获取的:

<package id="System.Data.SQLite" version="1.0.106.0" targetFramework="net35" />
<package id="System.Data.SQLite.Core" version="1.0.106.0" targetFramework="net35" />
<package id="System.Data.SQLite.Linq" version="1.0.106.0" targetFramework="net35" />

最佳答案

您将 native 插件放在了错误的文件夹中。

将32位dll插件放在Assets/Plugins/x86中。

将64位dll插件放在Assets/Plugins/x86_64中。

确保还包含任何依赖项,否则您仍然会看到相同的错误。

关于c# - Unity 5.5.6f1 - native 插件不起作用,错误 DllNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com