2015-04-05 21 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

相關問題