java使用jna调用c语言如何获得输出参数

时间:2024-10-14 16:09:02

1、你先在C环境下调用client_sdk_send_return()函数进行测试,确保不是此函数本身导致的问题。如果不是,再检查包装函数时是否参数传递有误。

java使用jna调用c语言如何获得输出参数

2、再新建一个 Lib.java:import com.sun.jna.Library;public interface Lib extends Library { int add(int a, int b); void addArray(int[] a, int[] b, int[] c,int len); String stringFun(String str1);

java使用jna调用c语言如何获得输出参数

3、生成dll:方法一:如果安装了MinGWf:cd MinGW/Jnagcc -Wall -shared test.c -o test.dlljavac Test.javajava Test这时目录下新生成了test.dll、Test.class、Lib.class。

java使用jna调用c语言如何获得输出参数

4、多数情况下,Java与C间的字符串传入,都是通过Java的String传入到C中的char*,但是由于Java IDE编码问题和JNA的不完善,如果传入的是中文字符,则C中函数会接收不正确。

java使用jna调用c语言如何获得输出参数

5、一种解决方发是,将Java IDE的编码格式设置成GBK,之后将String转化成byte[]传入C中。

java使用jna调用c语言如何获得输出参数

6、当然,在Java的JNA函数声明时,C函数的参数类型直接替换成byte[]即可,C程序中的原始函数参数依然保持char*。

java使用jna调用c语言如何获得输出参数
© 手抄报圈