0
SWIG를 사용하여 Java에서 DLL에 액세스합니다. 문자열 값을 char *로 설정하는 것 외에는 대부분 잘 작동합니다. 그런 다음 JRE가 종료됩니다.문자열 속성 (SWIG, Java)을 설정할 때 JRE가 종료되었습니다.
example.h :
typedef struct {
char* name;
int number;
} MyStruct;
본보기 :
%module example
%{
#include "example.h"
%}
%include "example.h"
자바 :
본보기 :
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 * }
자바 파일의 생성은 잘 작동하지만 빌드가 떨어져 충돌 :
는"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"가 아닌 무언가를 생성합니까?
저는 VS Express 2015, SWIG 3.0.10, Java 7, 모든 것을 x86으로 사용하고 있습니다.