您的位置:首页 > 编程语言 > Java开发

JNA的一个小问题-调用dll处理字符串,在java中不能反映出字符串变化

2013-05-06 12:00 453 查看
 

在使用JNA调用DLL时遇到了一个小问题。
dll的一个函数源码如下:

MYDLL_API void addString(char * a,char * b)
{
strcat(a,b);
printf(a);
return ;
}

 

java代码如下:

import com.sun.jna.Library;
import com.sun.jna.Native;

public class TestMyDLL {

public interface myIn extends Library {
myIn epen = (myIn) Native.loadLibrary("MyDLL", myIn.class);

public void addString(String a,String b);
}

public static void main(String[] args) {

String a="for ";
String b="test!";

myIn.epen.addString(a, b);
System.out.println(a);
System.out.println(b);
}

}


原意是将字符串b加到字符串a的末尾,得到a的结果为“for test!”,但java的System.out.println(a);仍然输出"for ",可见在C中实现的字符串连接(C中用‘\0’来判断结尾),但在java中String a还是没有变。这是个问题啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: