如何在jni

时间:2015-08-19 05:56:13

标签: java android c++ android-ndk java-native-interface

我创建了一个头文件" abc.h"声明

int abc();

然后,我创建了一个.cpp文件" abc.cpp"定义

int abc()
{ 
  return 10;
}

现在我从上面的文件创建了一个库libabc.so。

然后我创建了一个HelloWorld Android项目。然后我在jni中创建了一个lib文件夹,并将libabc.so文件设置为init。

现在我创建了另一个文件" xyz.cpp"在jni文件夹中想要使用abc()功能。  但是当我运行ndk-build命令时,我收到此错误。  Error: undefined reference to function abc

这是xyz.cpp文件。

int getAbcFunction()
{
    int value = abc();
    // return value;
}

jni中的Android.mk ---> lib文件夹

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := abc-prebuild
LOCAL_SRC_FILES := libabc.so
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)

jni文件夹中的Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Here we give our module name and source file(s)
LOCAL_MODULE    := helloworld
LOCAL_SRC_FILES := xyz.cpp

LOCAL_SHARED_LIBRARIES := abc-prebuild
include $(BUILD_SHARED_LIBRARY)

如何解决此错误。

1 个答案:

答案 0 :(得分:0)

#include "abc.h"添加到xyz.cpp的开头