gpt4 book ai didi

android-ndk - 如何通过 JNI 向 Java 公开 native 枚举?

转载 作者:行者123 更新时间:2023-12-01 05:26:45 25 4
gpt4 key购买 nike

我正在从现有项目中将 header 导入到 Android-NDK 的端口。在少数情况下,我想从 Java 层使用 native 头文件中定义的枚举。怎么能去这样做呢?

理想情况下,我想以某种方式将常量公开给 Java 层,但我看不到这样做的方法。

最明显的可能性是在 Java 和 C++ 中双重定义枚举。但是,现有标题 a) 没有明确的编号,b) 具有 #ifdef'ed 的元素,以及 c) 通过 SVN Externals 与现有项目共享。因此,双重定义枚举似乎比典型情况更脆弱。

下一个想法是使用一些构建时代码生成来基于预处理的 header 在 Java 中创建枚举——可能只是作为整数常量而不是 Java 枚举?

我的第三个也是最模糊的想法是在 Java 中定义枚举,将这些对象传递给 JNI 胶水,并将其与 FindClass()、GetStaticFieldID() 和 GetStaticObjectField() 的某些调用进行比较;然后让 JNI 胶将它们重新映射到 native 枚举。不过,这一切似乎都是低效的。

建议?

最佳答案

我会制作一组完全独立的 Java 枚举,并在两者都可用的 JNI 级别在它们之间进行映射。确保在枚举类上运行 javah,以便为它们的序数获得一些 #defines。

关于android-ndk - 如何通过 JNI 向 Java 公开 native 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com