JAVA通过JNA调用C语言的dll的问题,求解
实现说明:程序使用java的applet通过JNA让服务器的程序加载到客户电脑的DLL,并且调用dll中的接口方法,目前这一步已经成功。
问题:程序调用dll已经成功,接口方也收到了我们的请求,但是在接口方返回数据的给我们的时候,客户电脑上的JAVA applet报错直接闪退。以下是报错日志


Stack: [0x18640000,0x18690000], sp=0x1868ec4c, free space=315k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [msvcrt.dll+0x143f9] strlen+0x26
C [jna2054481210526187203.dll+0x6810] Java_com_sun_jna_Native_getString+0x20
j com.sun.jna.Native.getString(JZ)Ljava/lang/String;+0
j com.sun.jna.Pointer.getString(JZ)Ljava/lang/String;+7
j com.sun.jna.Pointer.getString(J)Ljava/lang/String;+90
j com.sun.jna.Function.invokeString(I[Ljava/lang/Object;Z)Ljava/lang/String;+35
j com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+544
j com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object;+214
j com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+341
j com.sun.proxy.$Proxy2.SendRcvSx(Ljava/lang/String;[B)Ljava/lang/String;+20
相关推荐
java用JNA调用dll实例,包含各种参数调用
实例中演示了各种参数形式的DLL函数调用,如:基本数据类型、基本数据类型的指针和引用、结构体、结构体的指针和引用、函数指针和回调函数、字符串指针、输入数组、输出数组等,非常实用。
JNA调用C编写的DLL
我们团队目前开发的产品是用java语言编写的,大家都知道,java编写的代码随便都可以被反编译,导致别人可能会看到你“裸奔”的样子。所以,为了避免这种安全隐患,团队最终商定,将部分核心代码改用c语言编写,封装为dll,再由java调用。 于是乎,我们就开始jna初探。今天通过各种百度,终于做了个例子出来,在此做个记录,以备后路之需。 1、构造一个dll 由于本机的vs2015没有安装c++模...
JNA调用DLL动态库以及如何创建DLL库详解
JNA调用DLL动态库以及如何创建DLL库 JNA与JNI这里就不比较了,简而言之,jna方便简洁。下面直奔主题,先从创建dll开始,第二部分介绍jna的使用。 一、创建DLL动态库,使用C++,开发平台用的是VS2015. 新建项目: 1、新建VC++Win32控制台应用程序 2、点击确定选择DLL,空项目 3、项目创建完成后,在项目栏源文件右键创建.cpp文件 4、在项目栏头文件中创建.h头文件,文件名跟cpp保持一致(创建时会有提示选择) 5、写简单的demo测试 代码: #include"y
[测试通过]JAVA调用第三方DLL的简单方法:JNA及DEMO
提供JNA4.3最新版本,简单dll,调用demo方法源码。 解压编译后即可运行
使用JNA替代JNI调用DLL,并解决内存溢出问题
问题描述: 在开发项目过程中,需要处理算法分析出来二进制流数据,并对数据解析处理转发。我们上层应用平台是使用java开发的,但开放平台是使用c++开发,虽提供给我们对应的.h头文件,但在java中来解析这些数据就显然有些复杂,在实现、效率上都可能不太理想。 解决方案: 请C++同事帮忙写个dll程序,dll去解析开发平台输出的二进制流数据,上层应用平台调用dll得到json报文,然后再去做一些业务处理。 那现在上层应用面临的问题:访问java外部功能接口实现方式(即调用dll)怎么选择及实现?


Web 开发
