build - Xamarin:使用 NDK 构建的 .so

标签 build android-ndk java-native-interface xamarin

我在 C 中的 Eclipse(Android 项目)上创建了两个简单的函数(设置和返回一个 int)。我使用 ndk-build 生成了一个 .so。我如何在 Xamarin 上使用这个 .so 并在我的 Xamarin.Android 项目中使用这两个函数?

谢谢!

最佳答案

假设我们有一个名为 MyTest.so 的共享库,并且我们希望在 Xamarin.Android 项目中使用它。 MyTest.so 包含一个函数

int MyTest_GetValue();

现在,我们需要在 Xamarin.Android 项目上使用此功能。以下是成功的步骤:

第 1 步:在 Xamarin.Android 项目中创建一个名为 lib 的新文件夹和子文件夹 armeabi。复制我的 .so 库以在 armeabi 文件夹中使用,如 here 所述

第 2 步:将 library.so(导入库)的属性设置为“AndroidNativeLibrary”,并将输出复制到“始终复制”。

第 3 步:(在 Xamarin.Android 类中工作,例如:MainActivity.cs)

  • 通过“使用 System.Runtime.InteropServices;”包含命名空间 InteropServices;

  • 在项目中使用标准的 DllImport 导入原生库如下:

    [DllImport("MyTest.so")] 
    public extern static int MyTest_GetValue();// with exact Functtion Name, Type & Params in the .so Lib.
    

第 4 步:在应用程序中使用上述函数 (MyTest_GetValue())。

例如:

int value= MyTest_GetValue();

Console.Writeline(value.ToString());

任务完成!:D

关于build - Xamarin:使用 NDK 构建的 .so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896650/

相关文章:

build - 在 Unity 上构建之前运行脚本

.net - 构建服务器上缺少 T4 模板目录

Grails 3.x 和 Jenkins : Save BUILD_NUMBER and date when deploying

c - 可以假设哪些依赖项安装在构建机器上?

android - 在 android jni 调用中传递错误的值

android - 在 Android.mk 中仅向一个文件添加编译器标志

Android NDK CMake 链接问题

java - 将 JNI 类型转换为 C++ 类型

java - JNI : set jobjectArray from c++

android - 无法使用类 '[]' 转换对象 'java.util.HashSet'