0

次のような 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 オブジェクトとして使用できるネイティブ コードで文字列を割り当てることができる必要があるだけです。

4

2 に答える 2

1

いいえ、Java 文字列は不変であり、JNI を介しても割り当てることはできません。

于 2013-10-25T14:13:58.430 に答える