我尝试在FreeBSD上从Mono加载本机库。
我已从库dlopen
导入方法libc.so
。该库具有绝对路径/lib/libc.so.7
。
public static class NativeMethods
{
[DllImport("libc.so.7", SetLastError = true)]
public static extern IntPtr dlopen(string filename, int flags);
const int RTLD_NOW = 2;
}
尝试加载库
static void Main()
{
IntPtr ptr = NativeMethods.dlopen("/lib/libc.so.7", NativeMethods.RTLD_NOW);
// here ptr always equals IntPtr.Zero!!!
}
为什么方法dlopen
无法在freebsd上加载标准库?我无法加载标准库,因此我无法加载构建我的其他库。
以类似的方式我在ubuntu15上加载库(在ubuntu15 libdl.so
而不是libc.so.7
)并且我总是成功。
有什么想法吗?也许是单声道的错误?