2015-04-05 69 views
0

我在jni文件夹中添加了一个简单的头文件和c文件。在NDK项目中添加另一个C源代码和头文件

-jni 
    -calculate.c 
    -calculate.h 
    -HelloJNI.cpp 
    -Android.MK 

这是代码。 a。 calculate.h

int add(int x, int y); 
int minus(int x, int y); 

b。 calculate.c

#include "calculate.h" 

/** 
* Implementation add 
*/ 
int add(int x, int y){ 
    return x + y; 
} 

/** 
* Implementation minus 
*/ 
int minus(int x, int y){ 
    return x - y; 
} 

c.HelloJNI.cpp

#include <jni.h> 
#include <android/log.h> 
#include <string.h> 
#include "calculate.h" 

extern "C" { 
    JNIEXPORT jstring JNICALL Java_com_farissyariati_hellojni_MainActivity_stringFromJni(JNIEnv *env, jobject obj); 
}; 

JNIEXPORT jstring JNICALL Java_com_farissyariati_hellojni_MainActivity_stringFromJni(JNIEnv *env, jobject obj){ 
    //Calculate *myCalculate = new Calculate(); 
    //int result = myCalculate->add(10,20); 
    int res = add(10, 20); 
    return env->NewStringUTF("Hello From CPP"); 
} 

之前添加以下代码: INT解析度=添加(10,20);

应用程序按预期运行。假设,我必须在Android.mk中添加一些东西,我应该添加什么?这里是我的Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := HelloJNI 
LOCAL_SRC_FILES := HelloJNI.cpp 
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true 
include $(BUILD_SHARED_LIBRARY) 

UPDATE。

我改变我的这个Android.mk,但仍然无法正常工作。

LOCAL_PATH := $(call my-dir) 
MY_SRC_FILE = /Users/farissyariati/Documents/EclipseProjects/HelloJNI/jni 

include $(CLEAR_VARS) 

LOCAL_MODULE := HelloJNI 
LOCAL_SRC_FILES := HelloJNI.cpp 

LOCAL_C_INCLUDES := $(MY_SRC_FILE)/calculate/ 
LOCAL_SRC_FILES += $(MY_SRC_FILE)/calculate/calculate.c 
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true 

include $(BUILD_SHARED_LIBRARY) 

回答

0

您可以在同一行指定多个源文件,像这样:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := HelloJNI 
LOCAL_SRC_FILES := HelloJNI.cpp calculate.c 
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true 
include $(BUILD_SHARED_LIBRARY) 

但是因为你是从C++调用C代码,你将需要使用外部的“C”来指定C风格的链接。你可以用这样的#包括(在HelloJNI.cpp):

extern "C" { 
    #include "calculate.h" 
} 

或者,你可以改变calculate.h处理,如图答案this question与C++代码链接。

+0

感谢它的工作! – farissyariati 2015-04-07 03:04:42

相关问题