次のような C API があります。
int my_function(char** assign_me_a_string);
基本的に、値を教えてくれるネイティブ コードが必要です。私が行った場合:
char* my_function();
それは正常に動作します。Java で使用できる文字列を返します。ただし、すべての関数がデフォルトで int (ステータス値) を返すため、最初のアプローチを使用することをお勧めします。
私は Various.i とこのタイプマップを使用しようとしました:
%apply char **STRING_ARRAY { char **assign_me_a_string }
これを行うと、Java API 用に生成された String[] が得られます。次に、次の方法で使用しようとします。
String[] myStringToAssign = new String[1];
my_function(myStringToAssign);
しかし、これは単にクラッシュするようです。
では、C コード内から Java String に値を割り当てる適切な方法はありますか? 私は配列を使用しようとはしていません。char** を逆参照し、Java で String オブジェクトとして使用できるネイティブ コードで文字列を割り当てることができる必要があるだけです。