JNAを使用してJavaクラッシュVMからcを呼び出します。これが発生した理由を誰かに教えてもらえますか?どこが間違っているのですか?
cコード:
int Encode(char* systemId, char* account, char* userName, char* tradingPwd, char* expansion, char* ipAddress, char* userAgent, char * encryptedIn, int encrySize);
cをx86_64x86_64x86_64 GNU /Linuxマシンの共有liglibTestEncode.soにコンパイルします。Encodeメソッドは文字列をエンコードし、それをjavaに返します。
Javaコード:
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("TestEncode", CLibrary.class);
int Encode(String systemId,String account,String userName,String tradingPwd, String expansion, String ipAddress, String userAgent, byte[] encryptedIn, int encryptSize);
}
public static void main(String args[]) {
Properties p = new Properties();
byte [] text = new byte[1024];
int retCd =CLibrary.INSTANCE.Encode("NRI","userID","username","password","","","",text, 1024);
System.out.println(Native.toString(text));
System.out.println("-----");
}