Xamarin iOS等效于System.loadLibrary

时间:2018-08-18 16:46:06

标签: xamarin xamarin.ios

在一个Android应用中,我添加了一个c ++文件(native-lib.cpp),该文件具有一些返回一些数据的方法。

例如:

JNIEXPORT jstring JNICALL
Java_my_android_namespace_activities_activity_name_getX(JNIEnv *env,
                                                                       jobject instance) {

    return env->NewStringUTF("some bla bla");
}

然后在Java代码中可以使用:

System.loadLibrary("native-lib");

public native String getX();

如何在iOS应用中实现相同目标?

1 个答案:

答案 0 :(得分:0)

Xamarin.iOS具有ObjCRuntime命名空间,该命名空间包含许多std。 ObjC包装器:

IntPtr h = Dlfcn.dlopen ("libMySpecialSauceLibrary.dylib", 0);
if (h == IntPtr.Zero) {
     // Failed load
} else {
    // Successful load
    Dlfcn.dlclose (h);
}

这些只是通过C#的DllImport进行包装,因此请查看ObjC文档中的参数文档,设置,库位置等。即

[DllImport ("libSystem.dylib")]
public static extern IntPtr dlopen (string path, int mode);