2011-01-10 6 views
3

私は、関数のパラメータとしてC std:stringをとるC++関数をたくさん用意しています。SWIGで生成されたインタフェースを使用してJavaからC++関数に文字列を渡す方法

これらの関数にjava文字列を渡したいとします。私はJavaとC++の間にSWIG JNIインターフェースを生成しました。私は引数なしのコンストラクタを見ることができますが、コンストラクタのString引数を使って自分のjavaをコンパイルしようとすると、 "シンボルを見つけることができません"というメッセージが表示され、クラスコンストラクタが定義された。

この問題をどのように修正しますか?タイプマップは答えですか?もしそうなら、どこから始めるのですか?

答えて

6

コールする関数が少々ある場合、std :: stringをとるC++メソッドをchar *を取るメソッドでラップし、デフォルトの型Java文字列間のマップC++ char *は期待通りに動作します。このようなものをinterface.iファイルに追加することもできます:

%include "std_string.i" // for std::string type-maps 
#include <string> 

これは変更なしであなたのケースでうまくいくと思います。 詳細については、the Java SWIG default type-map documentationおよび std_string.iファイルとstd_basic_string.iファイルが、swigがインストールされている場所にあります。この は、旧バージョンのSWIGでは使用できない場合があります(2.0.1を使用しています)。

関連する問題