簡體   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