使用C库中的Android NDK上
问题描述:
我想要做什么:使用C库中的Android NDK上
我发现一个C library which computes an audio stream's pitch,并希望在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) {
...
}
文件“second_c_file.h”是,我需要导入另一个文件,效果显着。
感谢您的帮助!
答
看看这里的NDK入门样本: http://developer.android.com/sdk/ndk/overview.html#samples
然后在你的NDK,看two-libs
例子。您可能希望将您的第三方音频音调检测库静态链接到您自己的C代码。
您需要查看Android.mk并修改它以静态构建第三方库,然后指出您的主项目使用该库。
它应该是非常简单的。 NDK(有一段时间没有用过)是一个熊。所以确保你的编译环境(特别是如果你使用的是Windows + Cygwin)。确保hello-jni构建,并且默认的两个库构建。修改第二个,你应该在那里。
感谢您链接到本教程!安装工作正常。但是当谈到C库到Android项目的集成(实际使用)时,它不起作用。我的Android应用程序只显示一个错误消息,意外停止了它。我不知道我做错了什么。我做了教程所说的。也许你可以在这个问题中看看我的C库:我必须做些什么改变? (...因为C类名称必须是类似于“Java_com_your_package_MainActivity_invokeNativeFunction”的东西,而在我的C库中还没有任何类别......)。 – caw
谢谢,您链接的教程帮助我安装和使用NDK。 – caw