(1)首先写一个java类,内容如下: package com.bw.gb2py; public class GB2PY { (2)编译该java文件,再编译生成头文件(供vc使用) javac GB2PY.java //编译生成class (3)在当前文件夹下创建 com/bw/gb2py 文件夹,将GB2PY.class放入该文件夹,回到当前文件夹,调用javah命令生成头文件。 javah com.bw.gb2py.GB2PY //生成头文件,文件名为com_bw_gb2py_GB2PY.h 注意头文件中的内容不能更改,否则生成的dll不能使用 (4)在VC中新建名为GB2PY的Win32 dll工程,将com_bw_gb2py_GB2PY.h拷贝到工程目录下,并加入工程。再拷贝%JAVA_HOME%/include/jni.h 和 %JAVA_HOME%/include/win32/jni_md.h 到工程目录下,并加入工程。 (5)实现com_bw_gb2py_GB2PY.h中声明的方法:Java_com_bw_gb2py_GB2PY_GetPY。注意java string和c中char的转换。java的string都用unicode编码(双字节),而char是单字节的。 int (*GetPY)(char* szGBString,PY &oPY); JNIEXPORT jstring JNICALL Java_com_bw_gb2py_GB2PY_GetPY //以上代码将java string name中的内容拷贝到了char数组charName中 ... //省略部分功能代码,通过调用第三方的dll函数将汉字转换为拼音,存储在charPY数组中 int slen = strlen(charPY); //以上代码将char型字符串转换为jchar型字符串 jstring js = env->NewString(buffer, len);
|
|