![](/img/trans.png)
[英]Android ndk : Problem for call of Java method from c++ with jni
[英]C++ / JNI - How to access enum declared in .h in JAVA (Android NDK)
我在C ++中有头文件,其中声明了一些枚举。
// enum.h
enum event {
event_1,
event_2,
event_3,
event_4
}
C ++文件和头文件在库.so中编译(使用GNU)。
现在我想在我的Java类中这样做:
// Test.java
public class Test {
private event currentEvent;
public test() {
if (currentEvent == event.event_1)
; // I will do my stuff
}
}
有人有建议吗?
谢谢
我怀疑有这样做的直接方式。
对于C或C ++,您可以使用SWIG 。 它自动为C ++类和元素生成Java包装器。
21.3.5.5简单的枚举
这种方法类似于不安全类型的方法。 每个枚举项也包装为静态最终整数。 但是,这些整数不会生成到以C / C ++枚举命名的类中。 相反,全局枚举生成到常量接口中。 此外,在C ++类中定义的枚举将其枚举项直接生成到Java代理类中,而不是Java代理类中的内部类。 事实上,这种方法有效地包装了枚举,好像它们是匿名枚举,结果代码是按照匿名枚举。 该实现位于“enumsimple.swg”文件中。
兼容性注意:SWIG-1.3.21及更早版本使用此方法包装所有枚举。 类型不安全方法优于此方法,这种简单方法仅用于向后兼容这些早期版本的SWIG。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.