【发布时间】:2015-09-18 02:05:08
【问题描述】:
我有一个使用 SQLite 并且在 Windows 上运行良好的 C# 应用程序。
相同的 Visual Studio 项目在 Xamarin Studio 中编译良好,但运行时我得到:
DllNotFoundException: SQLite.Interop.dll
尽管:
-
libsqlite3.0.dylib位于/usr/lib中,并且与可执行文件和其他 DLL 位于同一文件夹中 -
.是$DYLD_LIBRARY_PATH的一部分 - 可执行文件和所有使用 SQLite 的 DLL 都有一个匹配的
<the_exe_or_dll_including_filename_extension>.config文件,其中包含:
<configuration>
<dllmap dll="sqlite" target="libsqlite.0.dylib" os="osx"/>
<dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="osx"/>
</configuration>
我也试过加<dllmap dll="SQLite.Interop.dll" target="libsqlite3.0.dylib" os="osx"/>,不是更好。
有什么问题?
【问题讨论】:
-
两件事:
OS X不使用Windows使用的$PATH变量,动态库是dylibs,而不是dlls。为了使dll与单声道和OS X正常工作,需要使用Dllmap进行映射。 -
@l'L'l: This software 在 Mac 上使用带有 Mono 的 SQLite 并且不包含任何
Dllmap... 仍在尝试找到它是如何管理它的。 -
看起来它有几个 dllmaps,所以我想interop.dll 可能也需要它。
-
@l'L'l:上面的软件没有与SQLite相关的Dllmap。如果我要添加一个,您建议添加什么库?我在 SQLite 网站上找不到任何 OS X 库,只有独立的可执行文件。
-
在
dllmap配置部分尝试添加:<dllmap dll="sqlite" target="libsqlite.0.dylib" os="osx"/>和<dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="osx"/>
标签: macos sqlite mono system.data.sqlite dllnotfoundexception