私はscanf
JNAで関数を使用しようとしています:
package importDLLs;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class JNATest {
public interface CLibrary extends Library {
CLibrary clib = (CLibrary) Native.loadLibrary("msvcrt", CLibrary.class);
void printf(String format, Object... args);
int sprintf(byte[] speicher, String format, Object...args);
int scanf (String format, Object... args1);
}
public static void main(String[] args) {
CLibrary.clib.printf("Hello World");
String test= null;
args = new String[2];
args[0]="This is a test";
args[1]="and another one";
for ( int i = 0; i < args.length; i++ ){
CLibrary.clib.printf( "\nArgument %d : %s",i, args[ i ] );
}
CLibrary.clib.printf("\nBitte Namen eingeben");
CLibrary.clib.scanf("%s", test);
CLibrary.clib.printf("\nyour name is %s",test);
}
}
私はこれが初めてで、JNAについてもたくさん読んでいます。しかし、私はそれを使用する方法を本当に理解することはできません。printf
機能は問題なく動作します。
これは、起動時とコンソールに何かを書き込んだ後に発生するエラーです。
Java ランタイム環境によって致命的なエラーが検出されました:
PC=0x000007fefe531435、pid=10168、tid=2964 での EXCEPTION_ACCESS_VIOLATION (0xc0000005)
JRE バージョン: 7.0_03-b05 Java VM: Java HotSpot(TM) 64 ビット サーバー VM (22.1-b02 混合モード windows-amd64 圧縮 oops) 問題のあるフレーム: C [msvcrt.dll+0x61435]
コア ダンプの書き込みに失敗しました。ミニダンプは、クライアント バージョンの Windows では既定で有効になっていません。
詳細情報を含むエラー レポート ファイルは、*****\URC Lab\hs_err_pid10168.log として保存されます。
バグ レポートを提出したい場合は、次のサイトにアクセスしてください:
http://bugreport.sun.com/bugreport/crash.jsp
Java 仮想マシンの外部でネイティブ コードでクラッシュが発生しました。バグを報告する場所については、問題のあるフレームを参照してください。
プログラム出力:
Hello World Argument 0 : This is a test Argument 1 : and another one your name is
エラーが発生するのはなぜですか?どうすれば修正できますか?