cocosdx交叉编译到android使用jni实现java端调用C++方法
2013-11-27 11:16
701 查看
JNI是Java Native Interface的英文缩写, 中文翻译为本地调用, 自从Java 1.1开始就成为了Java标准的一部分.
Java调用C/C++ 步骤
编写带有native方法的Java类, 使用javac工具编译Java类
使用javah来生成与native方法对应的头文件
实现相应的头文件, 并编译为动态链接库(windows下是.dll, linux下是.so)
1 创建java类 Sample.java
public class Sample { static { System.loadLibrary("game"); } public static native void LoginCallBack(); }
2 进入该类所在的目录,使用 命令行 javac Sample.java , 在相同目录下会生成.class文件
3 使用 javah Sample ,在目录中会生成 Sample.h文件,得到我们需要的头文件
Sample.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class Sample */ #ifndef _Included_Sample #define _Included_Sample #ifdef __cplusplus extern "C" { #endif /* * Class: Sample * Method: LoginCallBack * Signature: ()V */ JNIEXPORT void JNICALL Java_Sample_LoginCallBack (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif
4 手动创建 Sample.cpp文件 实现生成的相应方法
#include "Sample.h" #include "cocos2d.h" #include "platform/android/jni/JniHelper.h" extern "C" { JNIEXPORT void JNICALL Java_Sample_LoginCallBack(JNIEnv *, jclass) { CCLog(" java调用本地接口 回调C++方法"); CWAXiaomiPlatform::xiaomiLoginCallBack(); } }
5 把 Sample.h Sample.cpp文件放在 android工程的 jni/hellocpp目录中
修改Android.mk文件,添加hellocpp/XiaomiPlatformJNI.cpp\
之后调用交叉编译。
问题:创建的java类中包含包名,用javah明令在生成的 .class 文件目录下直接运行出错。
package com.cwa.FatalFightCocos2dx; public class XiaomiPlatformJNI { static { System.loadLibrary("game"); } public static native void xiaomiLoginCallBack(); }
可以在com包所在的路径下使用javah: javah -jni com.cwa.FatalFightCocos2dx.XiaomiPlatformJNI
相关文章推荐
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法实现边缘检测代码(2)
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
- Android使用jni调用c++/c方法详解
- [转]Android通过NDK调用JNI,使用opencv做本地c++代码开发配置方法
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- android实现app通过jni调用C/C++方法
- (跨平台)cocos2d-x C++ or Object-C(前端)调用C# webservices(后台),实现交叉编译到Android/IOS/WinPhone等移动终端设备
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- android实现app通过jni调用C/C++方法
- Android Cmake 编译c,c++源文件,实现JNI调用
- Android调用C++OpenCV程序的方法(NDK+JNI)
- [置顶] 用android-ndk-r8e交叉编译cocos2d-x-2.1.4Android工程方法(而不再使用Cgywin,注意ndk和cocos2d-x版本)
- android APK加固篇-3.使用JNI加载dex和调用方法
- 使用jni实现在C语言中调用Java的方法
- cocos2dx 使用jni实现java调用c++
- android j使用JNI实现ava语言调用C语言
- android jni方式调用c++代码并在其它app中使用生成的.so文件
- Android利用JNI实现java调用C或C++