1、你先在C环境下调用client_sdk_send_return()函数进行测试,确保不是此函数本身导致的问题。如果不是,再检查包装函数时是否参数传递有误。
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);
3、生成dll:方法一:如果安装了MinGWf:cd MinGW/Jnagcc -Wall -shared test.c -o test.dlljavac Test.javajava Test这时目录下新生成了test.dll、Test.class、Lib.class。
4、多数情况下,Java与C间的字符串传入,都是通过Java的String传入到C中的char*,但是由于Java IDE编码问题和JNA的不完善,如果传入的是中文字符,则C中函数会接收不正确。
5、一种解决方发是,将Java IDE的编码格式设置成GBK,之后将String转化成byte[]传入C中。
6、当然,在Java的JNA函数声明时,C函数的参数类型直接替换成byte[]即可,C程序中的原始函数参数依然保持char*。