2010-12-16 21 views
0

我是JNA基礎架構的新手,但我認爲主要是我有一些庫「someLib」,並且創建了一個與其匹配的java接口。那麼我可以'只'使用它?JNA爲自定義庫

但問題是我不確定我需要嘲笑什麼,特別是有一些類需要我的功能。

可以說我的C++庫有一個'AdvancedString'對象 - 在內部使用一些其他的類。

這意味着它看起來是這樣的:

class B { ... }; 

class AdvancedString { 
    private: 
    B b; 

    public: 
    AdvancedString doSomething() { ... } 

}; 

,我需要能夠在Java代碼中說AdvancedString.doSomething()和它的工作。這意味着我需要......爲AdvancedString類創建一個接口?

public interface AdvancedStringInterface extends StdCallLibrary { 
    public AdvancedStringInterface doSomething(); 
} 

這是否合理?或者我錯過了什麼。感謝您提供的任何見解!

+1

JNA通常不支持C++接口,只有C.因此,您可能需要一個C wrapper接口來使用JNA。 (特別是,函數不能是C封裝器接口中的結構/類成員。) – 2010-12-16 23:27:00

回答

1

JNA將幫助您訪問C函數和數據。一種選擇是在C API中公開C++功能。

如果你想訪問很多C++類,SWIG更合適。它可以爲您的C++類創建Java包裝。這是非常強大的,但有一個學習曲線。