java调用dll传参_求教高手:有关DLL调用中参数传递问题???

在JNI环境中,Java调用DLL函数遇到字符串参数传递问题。DLL函数原型为SendMsg(long CommIndex, char *Msg, bool Chinese),Java声明为MySendMsg(long CommIndex, String Msg, boolean Chinese)。尽管long和boolean参数能正确传递,但String类型参数无法成功。解决方案涉及将Java的String转换为C++的char*。提供了ChgStringNativeChars和NativeChgCharsString两个函数作为转换示例。" 138248683,23013692,Web源码泄露详解:.git、.DS_Store、备份文件与SVN风险,"['前端开发', 'Git', '版本控制', '安全漏洞', 'Web开发']
摘要由CSDN通过智能技术生成

使用JNI调用DLL中的函数,DLL中函数原形:

SendMsg(long CommIndex,char * Msg,bool Chinese);

在JAVA类中写成如下声明:

public native long MySendMsg(long CommIndex,String Msg,boolean Chinese);

JAVA中调用如下:

System.out.println(mysm.MySendMsg(1,"参数传递测试abcd",true));

结果经测试long与boolean类型的参数可以正确传递到DLL函数,而String类型参数传递不成功,请问char *在JAVA中如何定义,在JAVA中调用带String类型参数的函数应该如何附值呀?

谢谢!

|

下面是我以前写的部分代码,中文绝对没有任何问题,分别是从String到char*和从char*到String的转化,可以参考一下

//函数ChgStringNativeChars,用以将java的String类型转化为C++的字符串

//要转化的Java的String放在jstr中,返回结果在str中

//返回值:

//0错误

//1成功

int ChgStringNativeChars( JNIEnv *env, jobject jstr, char *str, int strlen ) {

jclassJClsString;//java的String类的类指针

jmethodIDJMthdStringGetbytes;//java的String类的getbytes方法ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值