代码之家  ›  专栏  ›  技术社区  ›  SuperFrog

与System.loadLibrary等效的Xamarin iOS

  •  0
  • SuperFrog  · 技术社区  · 6 年前

    在一个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 回复  |  直到 6 年前
        1
  •  0
  •   SushiHangover    6 年前

    Xamarin.iOS 拥有 ObjCRuntime

    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);