我在Xamarin Studio中使用MonoMac进行了一个项目。我正在使用[DllImport ("rlimit")]
来访问.dylib文件。但是,即使我已将rlimit
映射到rlimit.dylib
,仍会抛出DllNotFoundException
。
.dylib文件位于项目中,应该可以访问,但无法找到它们。
我猜这些文件位置错误,或者由于某种原因没有被检测到。
答案 0 :(得分:3)
你需要将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)。