最近公司让小弟研究一下JNI,写一些JAVA调用IC卡读写器的例子
从网上看到这么一段代码(C++):
int length = (env)->GetStringLength(jstr);
const jchar* jcstr = (env)->GetStringChars(jstr, 0);
char* rtn = (char*)malloc(length*2+1);
int size = 0;
size = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,(length*2+1), NULL, NULL);
if(size <= 0)
{
return NULL;
}
(env)->ReleaseStringChars(jstr, jcstr );
rtn[size] = 0;
return rtn;
请问(env)->GetStringLength(jstr);是什么意思,为什么我翻看了一些VC++的书,没有这样写的
可以 先用env把jstr转换成c认得数据类型 然后用c自己的方法处理就好了 具体的可以看我的博客 里面有接收各种数据类型的方法。
jstr是java传入c的string类型 需要通过env进行处理 GetStringLength(jstr);是获取字符串长度
这是JNI定义的方法,可以查看相关api,http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html#string_operations
GetStringLength()是JNINativeInterface结构体里的一个方法 取得指定的字符串的长度。
具体的参考:[url]http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html#wp2556[/url]