Android中简单的JNI使用,C++调用JAVA
2012-09-13 10:51
866 查看
Cocos2d—X调用java
一、C++端
1、在.h文件中包含对应的文件
2、在.cpp文件里,你需要调用的地方加入以下这段代码
解释下上面的代码,这段代码主要是在C++中调用了Java里面的一个静态方法
1)#if和#endif表示是在Android平台下执行
2)"com/cysoft/common/Common",表示调用包名为com.cysoft.common下的Common类中的share方法,"()v"表示,括号里空的表示无参,V即void,表示无返回值的意思,想要知道更多的带参数带返回值的写法,可以参考:http://java.sun.com/docs/books/jni/html/types.html#44375
3)里面的it语句主要是判断一下这个方法是存在,内部就是调用Java里的静态方法,调用完后删除对应的引用
另外,我也参考了这篇文章:http://www.cocos2dev.com/?p=151
一、C++端
1、在.h文件中包含对应的文件
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include <jni.h> #include "platform/android/jni/JniHelper.h" #include <android/log.h> #endif
2、在.cpp文件里,你需要调用的地方加入以下这段代码
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) JniMethodInfo t; if(JniHelper::getStaticMethodInfo(t,"com/cysoft/common/Common","share","()V")) { t.env->CallStaticVoidMethod(t.classID,t.methodID); t.env->DeleteLocalRef(t.classID); } #endif
解释下上面的代码,这段代码主要是在C++中调用了Java里面的一个静态方法
1)#if和#endif表示是在Android平台下执行
2)"com/cysoft/common/Common",表示调用包名为com.cysoft.common下的Common类中的share方法,"()v"表示,括号里空的表示无参,V即void,表示无返回值的意思,想要知道更多的带参数带返回值的写法,可以参考:http://java.sun.com/docs/books/jni/html/types.html#44375
3)里面的it语句主要是判断一下这个方法是存在,内部就是调用Java里的静态方法,调用完后删除对应的引用
另外,我也参考了这篇文章:http://www.cocos2dev.com/?p=151
相关文章推荐
- Android JNI简单实例(Android java调用C/C++代码)
- Java使用JNI调用C/C++(windows和android平台)
- JNI简单使用之二:C/C++调用JAVA
- Android JNI 使用的数据结构JNINativeMethod详解 ||建立Android SDK下的JNI、JAVA应用完整步骤---Android JAVA调用C++代码
- 在eclipse下,JAVA通过JNI调用C++方法的简单例子(非android)
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android使用JNI(从java调用本地函数)
- Android JNI-c/c++调用java方法
- android-JNI学习之java和c++相互调用
- Windows下使用Java Jni调用C/C++初探
- AndroidJNI 通过C/C++调用JAVA
- AndroidJNI 通过C++调用JAVA
- linux下使用jni实现c++调用java程序(4)DestroyJavaVM出现错误
- AndroidJNI 通过C++调用JAVA
- AndroidJNI 通过C++调用JAVA
- AndroidJNI 通过C++调用JAVA
- 使用JNI进行Java与C/C++语言混合编程(1)--在Java中调用C/C++本地库
- 如何让Java和C++接口互相调用:JNI使用指南
- android jni方式调用c++代码并在其它app中使用生成的.so文件
- Android JNI通过C++调用JAVA