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

我在 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

https://stackoverflow.com/questions/15896650/

相关文章:

build - Gulp-Inject 不起作用

build - Intellij IDEA 项目中的自定义构建步骤

ant - 如何在项目之间最好地共享 Ant 目标?

iphone - Xcode:为不同的构建配置设置 GCC_PREPROCESSOR_DEFINIT

scala - 如何构建独立的 scala 可执行文件

haskell - 由于 native 依赖项中的 "multiple definition"链接器

c++ - 在 CMake 中使用编译器前缀命令(distcc、ccache)

build - 如何选择哪个 CMake 可执行目标将是默认目标?

java - 从相同的源代码构建可以产生功能不同的可执行文件吗?

c# - C# 中的友元程序集