NDK-Java调用C++文件
2015-01-08 16:59
387 查看
创建与C++相关的项目
详见NDK-Android项目创建
原理
本质是Java通过Jni调用C++文件,Jni相当于一个中间角色;
根本上是基于Linux环境下的交叉编译,官方NDK本身就是集成了Linux环境;
实际上就是使用NDK编译C++文件成为Linux环境下的库文件.so文件,再调用
必须使用Jni中定义的类型将C++中的类型与Java中的类型统一起来;
Java与C++类型转换
基本类型(都是在原来的类型名前加上“j”)
详见jni.h【C->java路径->jdk->include->jni.h】
typedef unsigned char jboolean;
typedef unsigned short jchar;
typedef short jshort;
typedef float jfloat;
typedef double jdouble;
typedef jint jsize;
头文件缺失(查找不到#include <>)
添加jni.h
右键project->properties->C/C++ General->Paths and Symbol
在includes页面下,选择GNU C,添加变量:jdk路径->include(有必要情况下需要再添加一个变量:jdk路径->include->win32)
其它头文件(引用C++系统库,如using namespace std)
在jni文件夹下新建Application.mk文件,添加上:APP_STL := gnustl_static
wstring或中文无法正常编译(打死都不让编译的)
因为在Android中使用的编码是UTF-8,支持中文,但是win系统本身的系统默认支持中文编码是GBK
使用记事本将C++源文件存为UTF-8(非GBK格式),然后再导入项目【特别是当源文件中包含中文时】
详见NDK-Android项目创建
原理
本质是Java通过Jni调用C++文件,Jni相当于一个中间角色;
根本上是基于Linux环境下的交叉编译,官方NDK本身就是集成了Linux环境;
实际上就是使用NDK编译C++文件成为Linux环境下的库文件.so文件,再调用
必须使用Jni中定义的类型将C++中的类型与Java中的类型统一起来;
Java与C++类型转换
基本类型(都是在原来的类型名前加上“j”)
Java中类型 | Jni中类型 | C++中类型 |
boolean | jboolean | unsigned char |
char | jchar | unsigned short |
short | jshort | short |
float | jfloat | float |
double | jdouble | double |
typedef unsigned char jboolean;
typedef unsigned short jchar;
typedef short jshort;
typedef float jfloat;
typedef double jdouble;
typedef jint jsize;
头文件缺失(查找不到#include <>)
添加jni.h
右键project->properties->C/C++ General->Paths and Symbol
在includes页面下,选择GNU C,添加变量:jdk路径->include(有必要情况下需要再添加一个变量:jdk路径->include->win32)
其它头文件(引用C++系统库,如using namespace std)
在jni文件夹下新建Application.mk文件,添加上:APP_STL := gnustl_static
wstring或中文无法正常编译(打死都不让编译的)
因为在Android中使用的编码是UTF-8,支持中文,但是win系统本身的系统默认支持中文编码是GBK
使用记事本将C++源文件存为UTF-8(非GBK格式),然后再导入项目【特别是当源文件中包含中文时】
相关文章推荐
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之第四个例子--用C/C++调用Java
- Eclipse下NDK开发(java调用so文件)
- JNI中如何在C++文件中调用java中的对象,举例说明
- Eclipse下NDK开发(java调用so文件)
- 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件
- Java/c/c++调用DLL文件
- 在NDK C++线程中如何调用JAVA API
- Android NDK中C++调用Java
- NDK基础(java ,c/c++, jni之间的关系及java和c/c++之间的相互调用)
- Android-NDK开发之第四个例子--用C/C++调用Java
- NDK 通过java调用so文件
- 转战Android之NDK(jni, c/c++调用java)
- java中通过ndk调用c/c++ 例子,详细解释
- java调用CC++编写的DLL文件问题
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- NDK Java 调用 C/C++ (二)
- NDK C/C++ 调用 Java (三)
- C++调用Java WebService生成客户端文件
- C/C++调用JVM -可执行Java文件方案