JNI中函数调用时c形式与c++形式的不同而产生的问题 (*env).GetStringUTFChars(str, 0) = env->GetStringUTFChars(str, 0)吧而以前我们用JNI的c形式时就是:(*env)->GetStringUTFChars(env, str, 0); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 c形式需要对env指针进行双重deferencing,而且须将env作为第一个参数传给jni函数 在c++中必须用env->而在C中用(*env)->因为在Jni.h中有如下定义const jchar *(JNICALL *GetStringChars) (JNIEnv *env, jstring str, jboolean *isCopy);#ifdef __cplusplusconst jchar *GetStringChars(jstring str, jboolean *isCopy) { return functions->GetStringChars(this,str,isCopy); }所以,如此,其他函数也一样,如果你非得要用以前用法 就必须去掉 __cplusplus 这个宏 to bigc2000(勇者无惧) :关键是我现在用(*env)->这种c的用法会报错.你的意思是JNI现在对c的用法不支持了,要用c的用法必须去掉__cplusplus 这个宏?另外,我试过的(*env).这种用法也是可以的,就相当于env->to kingfish(八百里秦川@龙城异客) :对的,我现在用的是.net Studio里面的c++编译器,会是编译器的问题吗? 发现一个有趣的问题,我在另一个地方的机器上用.net Studio里面的c++编译器编译就没有问题,不过其中有一点不同.即成功这次用的JNI.H是jBuilderX里面的.而失败的那次用的是jBuilder2005里面的,难道会和这个有关? 好象是跟编译器有关,不应该是用JNI.H的问题,不过还没有找到问题所在 如果通过windows 下的java程序 下载远程linux 机器上指定目录下文件啊 MessageFormat问题 关于JFrame和JPanel的问题 求助高手:如何取得以下容?(答者有分........) 匿名内部类的疑问 求高手帮忙JAVA 还是TextField响应的问题,把一个随机数设置为它的TEXT后,如何立刻响应。 Java的图形处理问题,高手指教 java中有没有像MSDN一样东东啊 JAVA的几个问题 关于方法调用的问题,向大家请教! 学好JAVA是不是不用懂数据结构,没有分了,请帮忙指点一下
必须用env->而在C中
用
(*env)->因为在Jni.h中有如下定义const jchar *(JNICALL *GetStringChars)
(JNIEnv *env, jstring str, jboolean *isCopy);#ifdef __cplusplusconst jchar *GetStringChars(jstring str, jboolean *isCopy) {
return functions->GetStringChars(this,str,isCopy);
}所以,如此,其他函数也一样,如果你非得要用以前用法 就必须去掉 __cplusplus 这个宏
另外,我试过的(*env).这种用法也是可以的,就相当于env->to kingfish(八百里秦川@龙城异客) :对的,我现在用的是.net Studio里面的c++编译器,会是编译器的问题吗?
即成功这次用的JNI.H是jBuilderX里面的.而失败的那次用的是jBuilder2005里面的,难道会和这个有关?