当前位置: 首页 > news >正文

Android JNI开发定义全局变量

要在 C++ 文件中设置一个 string 类型的全局变量,让其他 C++ 文件都可以访问,并且可以通过 JNI 方法修改这个变量,可以按照以下步骤进行操作

  1. 定义全局变量: 在一个头文件(比如 common.h)中定义一个全局的 string 变量,并在其中声明这个变量

     // common.h#ifndef COMMON_H#define COMMON_H#include <string>extern std::string globalString;#endif // COMMON_H
    
  2. 在一个 C++ 文件中实现全局变量: 在一个 C++ 文件中实现这个全局变量,并提供一个 JNI 方法来修改这个全局 string 变量。

     // GlobalVariables.cpp#include "GlobalVariables.h"std::string globalString;extern "C" JNIEXPORT void JNICALL Java_com_example_MyClass_setGlobalString(JNIEnv *env, jobject obj, jstring jstr) {const char *nativeString = env->GetStringUTFChars(jstr, nullptr);globalString = nativeString;env->ReleaseStringUTFChars(jstr, nativeString);}
    
  3. 使用全局变量: 在其它的 C++ 文件中,包含 GlobalVariables.h 头文件,就可以访问和操作全局变量 globalString

     // OtherFile.cpp#include "GlobalVariables.h"void someFunction() {// 访问全局变量 globalString}
    

在C++中,如果你希望在多个源文件中共享同一个全局变量,你需要在其中一个源文件中进行定义,而其他源文件则需要对该全局变量进行声明。这是因为在C++中,全局变量的定义只能出现在一个源文件中,而其他地方只能对其进行声明。common.h 头文件中包含了对全局变量 globalString 的声明,以及其他可能的定义。但是,在实际的源文件中(例如GlobalVariables.cpp),你需要对 globalString 进行实际的定义,以便在程序链接时分配内存空间。这样,其他源文件就可以通过包含 common.h 头文件来访问这个全局变量了。

http://www.lryc.cn/news/330739.html

相关文章:

  • docker容器部署gitlab的runner的shell模式注册下job中无法使用docker指令
  • 【SpringCloud】Zuul网关中心 代码详细介绍
  • Delphi D12中实现安卓中文语音合成(中文朗读)不用第三方控件
  • 设计模式 - Provider 模式
  • R语言颜色细分
  • 面向返回编程ROP问题及挑战
  • vscode shadertoy插件,非常方便的glsl着色器编写工具
  • 网络请求避坑,私有网络请求(Private Network Access)
  • AVL树和红黑树
  • 多线程入门
  • #!/bin/sh和#!/bin/bash的区别
  • 腾讯云(CVM)托管进行权限维持
  • STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)
  • DS3231SN
  • tsconfig.json文件翻译
  • 树状数组学习笔记
  • 【bugfix】如何解决svg到线上显示空白或者svg的viewBox为空
  • docker基础学习指令
  • 回溯大学生活
  • Android Fence机制
  • sa-token非Web上下文无法获取Request
  • tomcat 常见优化方案
  • 前端导出文本内容为csv文件,excel乱码
  • 36---USB HUB电路设计
  • FPGA在深度学习领域的应用的优势
  • Windows Edge 兼容性问题修复 基本解决方案
  • 【Servlet】服务器内部转发以及客户端重定向
  • 是否有替代U盘,可安全交换的医院文件摆渡方案?
  • Java设计模式详解:单例模式
  • Pointnet++改进即插即用系列:全网首发OREPA在线重新参数化卷积,替代普通卷积 |即插即用,提升特征提取模块性能