JNA调用DLL,接收返回值以及错误日志

qq_37400227 2017-11-21 10:20:36
System.setProperty("jna.encoding", "gbk");
// 首先定义指针,开辟内存空间,这里的内存空间根据返回的字符串来决定
Pointer a = new Memory(10);
Pointer s = new Memory(11);
Pointer d = new Memory(11);
Pointer f = new Memory(11);
Pointer g = new Memory(11);
int mcif = InterfaceDll.Instance.MCIF("1","1", "1", "1", "1", "1", "1", "1", "1", "1", a, s, d, f, g);

#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0fe263d8, pid=4264, tid=20288
#
# JRE version: 6.0_45-b06
# Java VM: Java HotSpot(TM) Client VM (20.45-b01 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [MFC42.DLL+0x263d8]
#
# An error report file with more information is saved as:
# D:\MEWorkspace2\Local\hs_err_pid4264.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

我的JDK是32位的 DLL也是32位

执行时而成功,时而不成功,不成功时报错
另成功时,如何获取到返回值 a s d f g的值
...全文
435 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 qq_37400227 的回复:
[quote=引用 3 楼 lye2000000_super 的回复:] http://www.cnblogs.com/armlinux/archive/2009/07/20/2390971.html 参考下这个的使用吧
你好,能私聊教一下吗? 文中的DLL似乎不是我需求的那种[/quote] 处理方式大同小异,你不可能找到跟你的完全一样的
qq_37400227 2017-11-22
  • 打赏
  • 举报
回复
引用 3 楼 lye2000000_super 的回复:
http://www.cnblogs.com/armlinux/archive/2009/07/20/2390971.html 参考下这个的使用吧
你好,能私聊教一下吗? 文中的DLL似乎不是我需求的那种
  • 打赏
  • 举报
回复
qq_37400227 2017-11-22
  • 打赏
  • 举报
回复
没人知道JNA怎么接收DLL的出参吗 不是返回值
qq_37400227 2017-11-21
  • 打赏
  • 举报
回复
自顶一下,错误信息可能是由于JVM内存的关系 现在比较关注如何获取到Pointer里的值 API里的getValue函数,JNA3.5.1和4.2.2都没有,不知是何原因

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧