【发布时间】:2016-11-30 23:57:57
【问题描述】:
我正在尝试将 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 运行时环境检测到致命错误:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) 在 pc=0x000007fefe531435, pid=10168, tid=2964
JRE 版本:7.0_03-b05 Java VM:Java HotSpot(TM) 64 位服务器 VM (22.1-b02 混合模式 windows-amd64 压缩 oops) 有问题的框架: C [msvcrt.dll+0x61435]
无法写入核心转储。默认情况下不启用小型转储 Windows 的客户端版本
包含更多信息的错误报告文件保存为: *****\URC 实验室\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
为什么会出现错误,我该如何解决?
【问题讨论】: