Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在android JNI中共享Java和C之间的变量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在 Android JNI中使用Java立即共享本机C变量?

我想从客户端的C层接收数据,因为服务器是用C语言编写的(包含结构读/写),并在数组变量中记录数据即将发生的情况,并想在Java中检测该变量并执行相应的操作,想知道这是否可能?

我考虑将关于数据即将出现的情况的文件写入sdcard,但是我想做的最后一件事,任何提示

@R_502_1964@

我最近有这个问题,可以解决它.我有一个C Qt Android项目需要执行一些java代码(只能从Android SDK访问).为了实现这一点,我必须在我的java和C代码之间共享一些常量(让它们一起交谈并相互理解).

以下是实现此目的的可能解决方案:

>在创建时让C将常量值传递给Java对象(或者如果Java调用C,则将其传递给Java对象).但是如果你有很多变数那就很难过了.
>让C和Java模块动态解析配置文件.应该工作,但没有尝试.
>在两个地方声明变量……糟糕的想法和难以维护
> C和Java都有一个直接使用的声明文件(‘included’)

我终于做了最后的解决方案.我的想法是让C和Java都使用一个java文件(这种方式可能有用,但我更像是一个C人,所以这对我来说更容易).我们使用预处理器使这个java文件有效,被C包含为头文件

下面是一个Java文件(constants.java)声明常量(整数和字符串)的示例:

package name1.name2.name3;
import java.lang.String;

class MyConstants
{
    public static String  THE_NAME() { return "Name"; }
    public static Integer THE_VALUE() { return 12; }
};

从任何Java代码访问变量都可以毫无问题地使用它.
现在,这是如何从C文件中包含它:

#include <string>
using namespace std;
#define public public:
#define package struct mockup1 { int name3; };struct mockup2 { mockup1 name2; };int i1 =
#define name1 mockup2()
#define import struct mockup3 { int String; };struct mockup4 { mockup3 lang; };int i2 =
#define java mockup4()
#define String string
#define Integer int

#include "constants.java"

#undef public
#undef String
#undef package
#undef import
#undef java
#undef name3

预处理器然后将constants.java文件更改为这个有效的C头文件(主要的困难是获取包和导入行,因为你不能在宏名称中使用点….必须是恶意的):

struct mockup1 { int name3; };struct mockup2 { mockup1 name2; };int i1 = mockup2().name2.name3;
struct mockup3 { int String; };struct mockup4 { mockup3 lang; };int i2 = mockup4().lang.String;

class MyConstants
{
    public: static string THE_NAME() { return "Name"; }
    public: static int THE_VALUE() { return 12; }
};

在这里,您将使用C中的常量!

int main()
{
   cout << MyConstants::THE_NAME() << MyConstants::THE_VALUE() << endl; 

   return 0;
}

大佬总结

以上是大佬教程为你收集整理的如何在android JNI中共享Java和C之间的变量?全部内容,希望文章能够帮你解决如何在android JNI中共享Java和C之间的变量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: