繁体   English   中英

C ++ / JNI - 如何在JAVA(Android NDK)中访问.h中声明的枚举

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM