在Android上使用C库而不是NDK

caw*_*caw 7 c android android-ndk

我想做的事:

我找到了一个C库来计算音频流的音高,并希望在Android中使用它.

我想不用移植它我也可以在NDK的帮助下使用它,对吧?

这是如何运作的?我当然要安装NDK然后呢?我可以在Android中正常调用此C库的函数吗?

C中我想要"导入"的库:

#include "second_c_file.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>

#ifndef max
#define max(x, y) ((x) > (y)) ? (x) : (y)
#endif
#ifndef min
#define min(x, y) ((x) < (y)) ? (x) : (y)
#endif

int _power2p(int value) {
    ...
}

typedef struct _minmax {
    int index;
    struct _minmax *next;
} minmax;

double _test_calculate(double * var1, int var2, int var3) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

显然,文件"second_c_file.h"是我需要导入的另一个文件.

谢谢你的帮助!

aar*_*rkk 7

可以在此处找到有关如何开始使用NDK的良好教程.是的,你应该能够编译并从NDK调用它而不需要很多更改(假设代码没有引用其他库).


mch*_*ang 7

在这里查看NDK入门示例:http: //developer.android.com/sdk/ndk/overview.html#samples

然后在您的NDK中,查看two-libs示例.您可能希望将第三方音频音调检测库静态链接到您自己的C代码.

您需要查看Android.mk并对其进行修改以静态构建第三方库,然后指示您的主项目使用该库.

它应该非常简单.NDK(暂时没有使用它)有点熊.因此,请确保您的构建环境(特别是如果您使用的是Windows + Cygwin)可以正常工作.确保hello-jni构建,并构建默认的两个库.修改第二个,你应该在那里.

  • 没什么大不了.不是为了积分:). (3认同)