Java如何将汉字传递到本地的动态连接库中(急)(100分)

  • 主题发起人 主题发起人 wmyao
  • 开始时间 开始时间
W

wmyao

Unregistered / Unconfirmed
GUEST, unregistred user!
Java如何将汉字传递到本地的动态连接库中
 
用jni
先写完了你的Java类,接下来就要写本地代码。本地方法符号提供一个满足约定的头文件,使用Java工具可以很容易地创建它而不用手动去创建。你对Java的class文件使用javah命令,就会为你生成一个对应的C/C++头文件。
一旦你有了这个头文件,你就需要写头文件对应的本地方法。
这里的难点就是返回值和参数类型根据等价约定映射到本地C/C++类型 我也为这个问题烦恼
 
我也是用了这个方法,但是没有解决,以下是我的两种 C++源码,但是就不行,请大家帮忙解决,谢谢!
一、
jboolean iscopy;
const char * szStr = (*env).GetStringUTFChars( s, &iscopy);

char * str = new char[lstrlen(szStr)] ;
lstrcpy(str,szStr);
AfxMessageBox( str );
delete str ;
(*env).ReleaseStringUTFChars( s, szStr );
二、
const jbyte *str = (const jbyte *)(*env).GetStringUTFChars( s, JNI_FALSE );
AfxMessageBox( (const char*)str );
(*env).ReleaseStringUTFChars( s, (const char*)str );
在java声如下:
public class test{
public test() {
}
public native void showmsg();
//实现调用的DLL中函数申明
static
{
System.loadLibrary ("test");
}
public static String toChinese(String strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue = new String(strvalue.getBytes("GBK"),"GB2312");
return strvalue.toString();
}
}
catch(Exception e){
return null;
}
}
}
 
已经解决
 
呵呵~~说说怎么解决的呀
 
后退
顶部