0
SWIGを使用してJavaのDLLにアクセスしています。文字列の値をchar *に設定する以外は、ほとんどの処理がうまく動作します。その後、JREは終了します。文字列プロパティ(SWIG、Java)の設定時にJREが終了しました
example.h:
typedef struct {
char* name;
int number;
} MyStruct;
example.i:
%module example
%{
#include "example.h"
%}
%include "example.h"
のJava:
example.i:
int number = MyStruct.getNumber() # works
MyStruct.setNumber(123) # works
String name = MyStruct.getName(); # works
MyStruct.setName("newName"); # crash
はまた、私はバイト配列を使用しようとしました(追加):
%include "various.i"
%apply char *BYTE { char * }
Javaファイルの生成が正常に動作しますが、ビルドは離れクラッシュ:
"jstring cannot convert to jbyteArray"
のラップコードは言う:
SWIGEXPORT jbyteArray JNICALL Java_bla_VERSION_1DLL_1get(JNIEnv *jenv, jclass jcls) {
...
if (result) jresult = jenv->NewStringUTF((const char *)result);
return jresult;
}
はバグのようなその何かか? "various.i"を使っても問題ありません。なぜなら "NewCharArray"ではなく "string"で何かを生成するのでしょうか?
私はVS Express 2015、SWIG 3.0.10、Java 7、すべてx86を使用しています。