关联C++文件:
1.右键点击项目,选择添加C++ Module
等待gradle config完成,注意项目结构下多了个cpp文件夹
2.修改界面
界面上自带的TextView组件声明id为textLabel
添加一个button
添加一个输入框
3.修改java代码
native函数调用C++代码
- static {
- System.loadLibrary("myapplication");
- }
- public native String sayHello(String name);
复制代码
4.修改C++代码,实现native函数
ide自动定义C++函数,添加实现
- #include <jni.h>
- #include <string>
-
- extern "C"
- JNIEXPORT jstring JNICALL
- Java_com_example_myapplication_MainActivity_sayHello(JNIEnv *env, jobject thiz, jstring name) {
- // 检查传入的 name 是否为 nullptr
- if (name == nullptr) {
- return env->NewStringUTF("Hello, World!");
- }
-
- // 将 jstring 转换为 C++ 的 std::string
- const char *nativeName = env->GetStringUTFChars(name, nullptr);
- if (nativeName == nullptr) {
- return env->NewStringUTF("Hello, World!"); // 内存不足时的默认返回
- }
-
- std::string greeting = "Hello, " + std::string(nativeName) + "!";
-
- // 释放字符串资源
- env->ReleaseStringUTFChars(name, nativeName);
-
- // 将 C++ 字符串转换回 jstring 并返回
- return env->NewStringUTF(greeting.c_str());
- }
复制代码
保存
|