cpp调用java_Android中简单的JNI使用,C++调用JAVA

Cocos2d—X调用java

一、C++端

1、在.h文件中包含对应的文件

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

#include

#include "platform/android/jni/JniHelper.h"

#include

#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里的静态方法,调用完后删除对应的引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 使用 Java 调用 C++ 实例需要进行以下步骤: 1. 编写 C++ 代码,并将其打包成可供 Java 调用的库文件(.so 文件)。 2. 在 Java 使用 JNIJava Native Interface)调用 C++ 库。 下面是一个简单的示例: 1. 编写 C++ 代码并将其打包成库文件 在 C++ 编写代码,将其打包成可供 Java 调用的库文件。以下是一个简单的示例,在 C++ 实现一个函数,计算两个整数的和,并将其打包成库文件: ```c++ // sum.cpp #include <jni.h> extern "C" JNIEXPORT jint JNICALL Java_com_example_sum_MainActivity_sum(JNIEnv *env, jclass clazz, jint a, jint b) { return a + b; } ``` 编译 C++ 代码,并将其打包成可供 Java 调用的库文件。可以使用 Android NDK 工具链来编译 C++ 代码,并生成库文件。以下是一个简单的示例: ```shell $ cd /path/to/project $ ndk-build ``` 编译完成后,将会在项目的 libs 目录下生成库文件(.so 文件)。在本例,生成的库文件名为 libsum.so。 2. 在 Java 使用 JNI 调用 C++ 库 在 Java 使用 JNI 调用 C++ 库,需要进行以下步骤: a. 加载库文件: 在 Java 使用 System.loadLibrary() 方法加载库文件。以下是一个简单的示例: ```java static { System.loadLibrary("sum"); } ``` 在本例,将会加载名为 libsum.so 的库文件。 b. 声明本地方法: 在 Java 声明本地方法,即 JNI 调用 C++的函数。以下是一个简单的示例: ```java public static native int sum(int a, int b); ``` c. 实现本地方法: 在 Java 实现本地方法,即调用 JNI 调用 C++的函数。以下是一个简单的示例: ```java public static int sum(int a, int b) { return sum(a, b); } private static native int sum(int a, int b); ``` 在本例调用 sum() 方法时,会调用本地方法 sum(),并最终调用 C++的 sum() 函数。 至此,完成了在 Android Studio 使用 Java 调用 C++ 实例的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值