標籤:mystra android jni c++ stl
JNI添加標準C++檔案
本文地址: http://blog.csdn.net/caroline_wendy
其餘參考: http://blog.csdn.net/caroline_wendy/article/details/39032551
如果需要調用標準C++庫, 則需要在jni檔案夾下, 添加Application.mk方法.
在其中聲明使用C++的標準模板庫(STL): APP_STL := gnustl_static
APP_STL := gnustl_staticAPP_CPPFLAGS := -frtti -fexceptions#APP_ABI := armeabi-v7a
然後建立
添加C++源檔案和標頭檔, 在
Android.mk中聲明.
標頭檔是檔案夾路徑(同目錄可以省略), 源檔案是cpp檔案地址, 注意是"+=", 表明是繼續添加
#LOCAL_C_INCLUDES += ./LOCAL_SRC_FILES += ./sayname.cpp
Android.mk具體檔案:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := HelloMyJniLOCAL_SRC_FILES := HelloMyJni.cpp#LOCAL_C_INCLUDES += ./LOCAL_SRC_FILES += ./sayname.cppinclude $(BUILD_SHARED_LIBRARY)
標頭檔和源檔案內容:
/* * sayname.h * * Created on: 2014年9月4日 * Author: Administrator */#ifndef SAYNAME_H_#define SAYNAME_H_#include <string>using namespace std;string sayname(void);#endif /* SAYNAME_H_ *//* * sayname.cpp * * Created on: 2014年9月4日 * Author: Administrator */#include "sayname.h"string sayname(void) {string str = "Hello Spike and Caroline and Wendy!!!";return str;}
介面檔案就可以調用, 這些標準C++檔案了.
具體調用方法:
#include <jni.h>#include "com_example_hellomyjni_JniClient.h"#include "sayname.h"JNIEXPORT jstring JNICALL Java_com_example_hellomyjni_JniClient_sayName (JNIEnv *env, jclass) {string str = sayname();return env->NewStringUTF(str.c_str());}
Android - JNI添加標準C++檔案