为Mac构建C#

时间:2018-07-18 14:03:10

标签: c# macos sqlite unity3d mono

我正在尝试为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

0 个答案:

没有答案