我这边使用JNA调用C编写的dll,c中函数的参数类型对应为char* 我使用String类型传入,
直接出错,然后换为byte[]数组传入,但是传入以后c语言这边接收以后的字符串出现冗余的字符。
如 java中传入 “reader” c中接收到的就为“reader      洽洽洽”类似的字符,可能不是这个字,不会拼写。
导致我c这边的程序没有办法正确的执行。
不知道为什么?请高手解答。而且我看JNA的文档上 已经说明了 char* 可以对应的为String类型,但是为什么我使用传入不成功呢?

解决方案 »

  1.   

    你是否没有在byte[]后面添加一个\0,因为C是以\0为字符串的结束符的。
      

  2.   

    我在java里面直接就是 “reader”.getBytes() 得到的数组,没有添加
      

  3.   

    我查看了一下,这个冗余可以正确的传递,后面还有结束符,传递过去的时候
    就不存在了,可以正确的读取。没人回答对了 真是。但是不可能在byte[]后面增加结束符的。而且使用byte[]是最好的选择。