jni
来源:互联网 发布:telnet ip加端口不通 编辑:程序博客网 时间:2024/06/08 11:07
一个JNI最简单示例。
(1)C++部分:
在HelloWorld.cpp增加如下函数,用于调用java代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include
"platform/android/jni/JniHelper.h"
#include <cocos2d.h>
#endif
void
HelloWorld::testJNI()
{
#
if
(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool
isHave = JniHelper::getStaticMethodInfo(minfo,
"org/cocos2dx/cpp/AppActivity"
,
"testjni"
,
"()V"
);
if
(!isHave) {
log
(
"jni:testjni is null"
);
}
else
{
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
}
#endif
}
(2)Java部分:
在org.cocos2dx.cpp.Activity中增加如下函数,供C++调用。
1
2
3
public
static
void
testjni() {
System.out.println(
"From Java"
);
}
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "com/john/test/HelloCocoStudio2", "ttt", "()Ljava/lang/String;"))
{
jstring jstr = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
std::string text = JniHelper::jstring2string(jstr);
//label->setString(text.c_str());
}
#endif
0 0
- Jni
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- JNI
- 解决Eclipse每次修改完代码后需要先Clean,不然部署不上文件的问题
- OpenCV Scalar详解
- 本地多级文件 原样上传到hdfs
- 利用scp 远程上传下载文件/文件夹
- 剑指offer[12]合并两个排序的链表
- jni
- QT QFile删除文件失败
- C#入门经典第6版学习 六
- tomcat详解
- 关于老项目增加功能的问题
- 【原创】东方耀reactnative 视频13之-Text组件
- 别让负能量击垮你!
- QLabel加载图片
- 使用flume进行日志收集的总结(2)