JNI-ndk编译cpp
来源:互联网 发布:商派软件怎么样 编辑:程序博客网 时间:2024/05/12 00:32
有些时候我们的项目底层可能是由c++来实现的,而不是c来实现,jni也对c++声明了一些接口,跟c的有点不一样
在jni.h文件中查看可以得知,jni对c++有一个wrapper,定义在struct _JNIEnv中
/* * C++ object wrapper. * * This is usually overlaid on a C struct whose first element is a * JNINativeInterface*. We rely somewhat on compiler behavior. */struct _JNIEnv { /* do not rename this; it does not seem to be entirely opaque */ const struct JNINativeInterface* functions;#if defined(__cplusplus) jint GetVersion() { return functions->GetVersion(this); }
我们可以知道JNINativeInterface、JNIEnv、_JNIEnv之间的关系如下
struct _JNIEnv;struct _JavaVM;typedef const struct JNINativeInterface* C_JNIEnv;#if defined(__cplusplus)typedef _JNIEnv JNIEnv;typedef _JavaVM JavaVM;#elsetypedef const struct JNINativeInterface* JNIEnv;typedef const struct JNIInvokeInterface* JavaVM;#endif/* * Table of interface function pointers. */struct JNINativeInterface { void* reserved0; void* reserved1; void* reserved2; void* reserved3; jint (*GetVersion)(JNIEnv *);
先前c文件中我们的实现是
(*env)->GetVersion(env);在 c++中就要变成
env->GetVersion();
Android.mk文件中加载的文件后缀名做一下更改就行
LOCAL_SRC_FILES := tu_bb_ndk_cpp_MainActivity.cpp
- JNI-ndk编译cpp
- NDK编译多个cpp
- Android-ndk, JNI, sockt32.cpp:INVALID_SOCKET解决
- android ndk jni 项目编译
- Android-Ndk Cmake编译JNI
- NDK编译cpp和c文件
- NDK编译时cpp文件出错
- Windows7下使用Dev-CPP 编译 JNI
- ndk编译c可执行程序(jni 入门)
- Android NDK R8C 重新编译jni问题
- Android NDK R8C 重新编译jni问题
- 使用NDK编译JNI时出现错误
- Android NDK&&JNI 编译环境的搭建
- ndk编译c可执行程序(jni 入门)
- [NDK] JNI 中编译两个库文件。
- Android NDK&&JNI 编译环境的搭建
- ndk编译c可执行程序(jni 入门)
- eclipse ndk编译JNI的设置
- 日期工具类DateUtils
- 关于宏的正确用法和错误用法
- UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系--UML一波流系列讲解
- Rails中文Podcasts【一】
- JAVA Properties工具类
- JNI-ndk编译cpp
- 使用eclipse导入Android工程错误
- 34个iOS设计师的工具和资源
- SuSE Linux10.1 网络设置以及和主机通信
- Android中的JSON详细总结
- httpClient 用于发送HTTP请求的工具类
- Mac OS X 背后的故事(四)——政客的跨界
- 基于arduino的智能小车底层系统开发
- Hibernate工作流程