我正在尝试为MAC建立System.Data.SQLite库。
我按照以下示例构建了libSQLite.Interop.so:https://system.data.sqlite.org/index.html/artifact?ci=trunk&filename=Setup%2Fcompile-interop-assembly-release.sh
我的Unity项目包含我的libSQLite.Interop.so(从我的linux计算机构建)和我的System.Data.SQLite.dll(从Windows构建)。
当我使用Unity构建MAC应用程序时,它会启动,但无法加载库。
这是日志:
Fallback处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.dylib 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.so 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.bundle 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/SQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dylib 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.so后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.bundle 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/SQLite.Interop 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.dylib 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.so 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.bundle 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.dylib 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.so 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.bundle 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/SQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dylib 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.so后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.bundle 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/SQLite.Interop 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.dylib 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.so 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll.bundle 后备处理程序无法加载库 /Users/victor/Desktop/BUILD_MAC.app/Contents/Frameworks/MonoEmbedRuntime/osx/libSQLite.Interop.dll DllNotFoundException:(包装在)SQLite.Interop.dll 本地管理) System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(System.Data.SQLite.SQLiteConfigOpsEnum) 在System.Data.SQLite.SQLite3.StaticIsInitialized()[0x0001c]中 :0处 System.Data.SQLite.SQLiteLog.Initialize()[0x00000]在 :0处 System.Data.SQLite.SQLiteConnection..ctor(System.String connectionString,System.Boolean parseViaFramework)[0x00021]在 :0处 System.Data.SQLite.SQLiteConnection..ctor(System.String connectionString)[0x00000] in:0
在(包装器远程调用并检查) System.Data.SQLite.SQLiteConnection..ctor(string)位于 LibLOCA.Localisation.LoadLanguage(LibLOCA.GameLanguage语言) [0x0004a] in:0
在此过程中我没有错过任何事情吗?我猜我在混合建筑物时做错了什么,但这确实让我感到困惑。
编辑 我设法使用脚本来构建它,并将新的dylib文件放入构建的Managed文件夹中。看来可行,但是当我打开数据库时,出现以下异常:
System.EntryPointNotFoundException:在DLL“ sqlite3”中找不到名为“ sqlite3_rekey”的入口点
好像这个人有一个类似的问题:Mono.Data.Sqlite throws exceptions 但是我不明白解决方案,我可以看到代码中的行,但是我不明白我应该进行哪些更改才能使其正常工作。
EDIT2 我已经向脚本中添加了-DSQLITE_HAS_CODEC = 1,现在构建不再起作用了,但我有以下例外:
体系结构x86_64的未定义符号: 来自“ interop-523232.o中的_attachFun”引用的“ _sqlite3CodecAttach” 来自“ interop-523232.o”中的_sqlite3RunVqcuum引用的“ _sqlite3CodecGetKey” _interop-523232.o中的_attachFunc