2010-12-16 5 views
0

私はJNAインフラストラクチャーを初めて使っていますが、私はいくつかのライブラリー "someLib"を持っていると思うので、それに合わせてJavaインターフェースを作成します。それから、私はちょうどそれを正しく使うことができますか?カスタムライブラリーのJNA

しかし問題は、私がモックアウトする必要があることがわかりません。具体的には、私はその機能が必要ないくつかのクラスがあります。

私のC++ライブラリには、他のクラスを内部的に使用する「AdvancedString」オブジェクトがあります。

class B { ... }; 

class AdvancedString { 
    private: 
    B b; 

    public: 
    AdvancedString doSomething() { ... } 

}; 

そして、私はAdvancedString.doSomething()を言って、Javaコードでできるようにする必要があり、それは仕事があります

意味、それはこのようになります。つまり、私は... AdvancedStringクラスのインターフェースを作成する必要がありますか?

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

これは妥当と思われますか?あるいは私は何かを逃している。あなたが与えることができる任意の洞察に感謝します!

+1

JNAは一般的にC++インターフェイスをサポートしていません.Cのみをサポートしているため、JNAを使用するにはCラッパーインターフェイスが必要になる可能性があります。 (特に、関数はCラッパーインターフェースのstruct/classメンバーになれません)。 –

答えて

1

JNAは、Cの関数とデータにアクセスするのに役立ちます。 1つの選択肢は、C++の機能をC APIに公開することです。

多くのC++クラスにアクセスする場合は、SWIGが適しています。 C++クラス用のJavaラッパーを作成できます。それは非常に強力ですが、学習曲線があります。