使用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