Android - JNI添加标准C++文件

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_static
APP_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    := HelloMyJni
LOCAL_SRC_FILES := HelloMyJni.cpp
#LOCAL_C_INCLUDES += ./
LOCAL_SRC_FILES += ./sayname.cpp

include $(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());
}
时间: 2024-10-22 10:08:36

Android - JNI添加标准C++文件的相关文章

Android - JNI加入标准C++文件

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_static APP_CPPFL

android 通过添加proguard.cfg文件实现代码混淆

若项目中没有proguard.cfg文件,手动添加 新建文本,输入以下代码 -dontwarn //若项目中导入了第三方jar包,需要添加该行 -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/

android studio添加jar包文件

1.添加jar文件 将jar文件复制至app module目录下的libs文件夹下,然后打开app module目录下的build.gradle配置文件,在dependencies项中添加配置命令,这里有 1 一次性引入libs目录下所有jar文件 2 compile fileTree(include: ['*.jar'], dir: 'libs') 3 4 5 单个逐一引入jar文件 6 compile files('libs/universal-image-loader-1.8.6-with

Android 动态添加Spinner(.java文件内实现) 实现 改变spinner 内文字属性

动态添加spinner 控件 Spinner s = new Spinner(this); String []items={"自己定义的要显示的数组"}; my_SpinnerAdapter array_adapter =new my_SpinnerAdapter(this, android.R.layout.simple_spinner_item, items); array_adapter .setDropDownViewResource(android.R.layout.simp

Android JNI的Android.mk文件语法详解

Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次. 所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义. Android.mk文件语法允许我们将Source打包成一个"modules". modules可以是: 静态库 动态库. 只有动态库可以被 install/copy到应用程序包(A

android NDK开发编译C++文件出现Type &#39;jint&#39; could not be resolved和Unresolved inclusion: &lt;jni.h&gt;的解决办法

今天在编译android NDK工程的时候,在jni文件夹下的cpp文件中报了一大堆错误,诸如:Unresolved inclusion: <jni.h>.Type 'jint' could not be resolved.Type 'jintArray' could not be resolved等,根据经验,这样的错误肯定是没有包含相应的头文件导致的. 解决方案: 选中工程,右键->Properties,点击C/C++ General展开,点击Path and Symbols,在右边

Android jni aes加解密,实现文件的加解密,具体实现可以自行修改,上面的代码为简单介绍,下面的是JNI端实现文件加解密,可以修改为字符串加解密

#include "aes.h" #include "modes.h" #include "e_os2.h" #include "aes_locl.h" #include "opensslconf.h" AES_KEY aes; //aes cbc模式加解密用到的向量 unsigned char iv[AES_BLOCK_SIZE]; for (i = 0; i < AES_BLOCK_SIZE; i

Android JNI开发生成.h头文件问题(转)

在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过DOS命令执行,(1)开始->运行->cmd->进入dos命令操作界面 在命令行中输入javah -classpath bin\classes -d jni com.sirc.jni.HelloWorld 通过输入javah 可以看到以下结果:用法:javah [选项] <类>

Android Studio 添加动态库os文件的方法

错误 02-28 20:14:13.904 18116-18116/? E/AdFireWallNative﹕ AdFrieWall JNI_OnLoad 02-28 20:14:13.904 18116-18116/? E/AdFireWallNative﹕ AdFireWall JNI_OnLoad done. 02-28 20:14:13.555 743-1064/? E/﹕ Could not open /sys/devices/system/cpu/cpufreq/hotplug/cp