我有一个在 Xamarin Studio 中使用 MonoMac 的项目。我[DllImport ("rlimit")]
用来访问 .dylib 文件。但是,即使我已经映射rlimit
到rlimit.dylib
,DllNotFoundException
仍然会抛出 a 。
.dylib 文件在项目中,应该可以访问,但是找不到。
我猜这些文件要么在错误的位置,要么由于某种原因没有被检测到。
您需要将 dylib 放在 mono 可以找到的任何地方。
您可以通过执行以下操作找出 mono 在哪里查找本机库:
export MONO_LOG_LEVEL=debug
export MONO_LOG_MASK=dll
mono yourprogram.exe
详细查找输出将打印到终端。在我的系统上,mono 首先在可执行文件所在的目录中查找,因此将 dylib 放在那里可能是最简单的。然后 mono 要求系统找到 dylib(通过尝试在没有路径的情况下打开它)。系统通常会在 /usr/lib 和其他一些地方查找(这当然取决于系统),但无论如何,您都可以通过将 LD_LIBRARY_PATH 设置为该路径来添加系统查找的路径。在这种情况下,您将这样做:
export LD_LIBRARY_PATH=/path/to/dylib:$LD_LIBRARY_PATH
mono yourprogram.exe
请注意,您不需要 .dllmap,mono 会根据平台自动附加适当的后缀(Mac 上的 .dylib,Linux 上的 .so 和 Windows 上的 .dll)。