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

 

在使用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还是没有变。这是个问题啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值