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还是没有变。这是个问题啊!
相关文章推荐
- Java 通过 JNA 调用 DLL 返回 char * 字符串乱码问题的解决
- JAVA 通过 JNA 调用 C程序 dll 函数传入中文参数问题
- JAVA调用DLL -- JNA和Fat Jar的使用及打包问题(一)
- 关于vs2010下编译dll动态库,JNA接口在java中调用的问题
- java 关于split分割字符串,空结果不能得到的问题,多个分隔符的处理
- JAVA调用DLL -- JNA和Fat Jar的使用及打包问题(二)
- java.lang.UnsatisfiedLinkError: Can not load XXX library ... JNA不能加载DLL动态库问题
- VC调用Delphi写的dll的一个问题的处理
- 关于Java中使用hessian-3.0.20调用远程服务连接出错异常try catch无法捕捉的问题处理
- TopCoder SRMS 1 字符串处理问题 Java题解
- 多个线程调用同一个处理函数的互斥问题
- JNA--Java调用DLL
- 关于Powerbuilder调用VC的dll出现的一个问题及解决办法
- 【开发者笔记】java 利用jna调用c#的dll
- 开发问题-声明一个类时调用它里面的方法发现不能调用
- Android Studio 通过JNA调用 Clang编译的so库,以及Java JNA 调用x64dll,C# dllimport调用x86dll
- 在解压gz文件时,如果直接用java.util.zip.GZIPInputStream来处理问题只能解压很少一部分内容,通过类MultiMemberGZIPInputStream 可以完全解压一个gz文件。
- Java DOM 处理XML时调用getChildNodes函数,子节点个数问题
- [JNA系列]Java调用Delphi编写的Dll之JNA使用
- java 中System.loadLibrary()调用c++Dll的路径问题