我是Android新手,我正在尝试创建一个简单的SDK + NDK概念。我按照以下步骤操作:
system.loadLibrary("")
使用静态块加载库。javah -jni filename
创建mk文件,包含以下内容:
LOCAL_PATH:= $(致电my-dir)
包括$(CLEAR_VARS)
LOCAL_MODULE:=
LOCAL_SRC_FILES:= .c
包括$(BUILD_SHARED_LIBRARY)
<ndkfolder>/ndk-build
但我陷入了“12”点,并出现以下错误:
**"Compile thumb : com_cts_c2dmclient_NativeLib <= com_cts_c2dmclient_NativeLib.c
jni/com_cts_c2dmclient_NativeLib.c:3:40: fatal error: com_cts_c2dmclient_NativeL
ib: No such file or directory
compilation terminated.
make: *** [obj/local/armeabi/objs/com_cts_c2dmclient_NativeLib/com_cts_c2dmclien
t_NativeLib.o] Error 1**
注意:.h文件已成功创建。
我的com_exampleservice_NativeLib.c文件
#include "stdio.h"
#include "malloc.h"
#include <com_exampleservice_NativeLib.h>
JNIEXPORT jint JNICALL Java_com_exampleservice_NativeLib_loop
(JNIEnv * env,jobject obj,jint v1, jint v2){
int loop;
unsigned long int *array;
if(v2 == 0){
array = (unsigned long int *)malloc(v1 * sizeof(unsigned long int));}
else if(v2 == 1)
{
array = realloc(array,sizeof(array)+v1);
}
else{
}
array[0] = 1;
array[1] = 1;
for (loop = 2; loop < v1; loop++) {
array[loop] = array[loop - 1] + array[loop - 2];
}
for (loop = 0; loop < v1; loop++) {
}
if(v2 == 2)
{
free(array);
}
return 0;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您的Android.mk
文件在您的问题中看起来不太好。
确保{c}文件附近的com_exampleservice_NativeLib.h
目录中存在jni
文件。
可能需要将目录添加到包含路径,例如
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
请注意,此$(LOCAL_C_INCLUDES)
必须是绝对路径列表,而不是基于$(LOCAL_SRC_FILES)
的{{1}}。
另一个注意事项是,在$(LOCAL_PATH)
文件中,使用com_exampleservice_NativeLib.c
指令ornamenation不正确。应该去
#include
有关详细说明,请参阅What is the difference between #include <filename> and #include "filename"?。