厂家的DLL函数的原型:char*GetErrMsgA(void);intGetMyID(char*myid);我的思路是这样的:使用Swig,JNI对厂家的dll进行封装,然后用Vc6.0编译产生Java可以直接使用的dll(Test.dll),最...
厂家的DLL函数的原型:
char * GetErrMsgA(void);
int GetMyID(char *myid);
我的思路是这样的:使用Swig,JNI对厂家的dll进行封装,然后用Vc 6.0编译产生Java可以直接使用的dll(Test.dll),最后在JAVA里调用厂家DLL里面的函数。当函数有Char * 类型的参数,遇到了问题
JAVA中的代码:
System.loadLibrary("Test"); //Test.dll就是新编译产生的dll
String ErrMsg = "###";
ErrMsg = Test.GetErrMsgA();
System.out.println(ErrMsg); //这个正常,可以打印出dll返回的ErrMsg数据
String MyID = "***";
Test.GetMacID(MyID);
System.out.println(MyID); //这个地方就出问题了,一直打印的是"***";
现在可以肯定,已经成功调用厂家动态库里面的GetMyID函数,并且在厂家他们自己的日志里也能看到对应的记录和MyID,问题在于JAVA获取不到这个MyID,如何解决?
测试了其它dll里的函数,如果有参数是Char *类型,都有这个问题,如果函数返回值是Char *,那一切正常。
上面写错了,JAVA代码不是Test.GetMacID(MyID); 而是Test.GetMyID(MyID); 笔误笔误用Test.GetMyID(MyID);也是获取不到数据
求解答,求帮助!
展开