Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在androidoverndk中使用C库_Android_C_Android Ndk - Fatal编程技术网

在androidoverndk中使用C库

在androidoverndk中使用C库,android,c,android-ndk,Android,C,Android Ndk,我想做什么: #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 _power

我想做什么:

#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) {
    ...
}
我已经找到了一个,并希望在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”
#包括
#包括
#包括
#ifndef最大值
#定义最大值(x,y)((x)>(y))?(x) :(y)
#恩迪夫
#ifndef min
#定义最小值(x,y)((x)<(y))?(x) :(y)
#恩迪夫
int _power2p(int值){
...
}
typedef结构_minmax{
整数指数;
结构_minmax*next;
}极小值;
双精度测试计算(双精度*var1,int-var2,int-var3){
...
}
文件“second_c_file.h”显然是我需要导入的另一个文件


谢谢你的帮助

关于如何开始使用NDK的好教程可以是。是的,您应该能够让它编译并从NDK调用它,而无需做很多更改(假设代码没有引用其他库)。

在这里查看NDK入门示例:

然后在NDK中,查看
two lib
示例。您可能只想将第三方音频基音检测库静态链接到您自己的C代码

您需要查看Android.mk并修改它以静态方式构建第三方库,然后指出您的主项目使用该库


这应该很简单。NDK(有一段时间没用了)有点像熊。因此,请确保构建环境(尤其是在使用Windows+Cygwin时)正常工作。确保hello jni构建和默认的两个libs构建。修改第二个,您应该会在那里。

感谢您提供本教程的链接!安装工作正常。但是,当涉及到将C库集成到Android项目中(实际使用)时,它不起作用。我的Android应用程序只是显示一条错误消息,表明它意外停止。我不知道我做错了什么。我照教程上说的做了。也许你可以看看我的C库中的问题:我必须做什么改变?(…由于C类名必须类似于“Java\u com\u your\u package\u MainActivity\u invokeNativeFunction”,并且在我的C库中还没有任何类…)。谢谢,您链接的教程帮助我安装和使用了NDK。非常感谢!您通过引用NDK示例“两个LIB”帮助了我很多。但不幸的是,我只能选择一个答案。