请教高手C/C++调用Java的问题

大大怪老张 2006-07-11 10:00:47
琢磨了两天还是没的思路

1。就是当Java方法的返回值为string类型时,总是出问题,其他返回为int或者boolean等没问题。

c++中char*,但在这里返回的时候我以object类型处理, 以(jstring)来强制转换,但是每次返回都是都是空。。。。(????)


2。通过C++对java的方法进行写时,若java方法是两个参数,比如int setNewFlag(int position,boolean bls)。。要传递参数 在C++中的类型怎么设置?




...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大大怪老张 2006-07-12
  • 打赏
  • 举报
回复
没有哦 我找了英文版的core2 advance

我的意思是这个:
比如你在上篇提到的这个,(ILjava/lang/String;)I
在C中写的时候 callIntMethod(cls,methodid,*******);
第三个参数用什么形式 怎么写进去?
我采用 jobject不行,采用array也不妥 。。埃
大大怪老张 2006-07-11
  • 打赏
  • 举报
回复
都有问
xiaoyan0413 2006-07-11
  • 打赏
  • 举报
回复
应该去c++那去问才对
yulin001122 2006-07-11
  • 打赏
  • 举报
回复
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeTest */

#ifndef _Included_NativeTest
#define _Included_NativeTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: NativeTest
* Method: twoFields
* Signature: (ILjava/lang/String;)I 这里就是在C++的参数类型
*/
JNIEXPORT jint JNICALL Java_NativeTest_twoFields
(JNIEnv *, jclass, jint, jstring);

#ifdef __cplusplus
}
#endif
#endif
yulin001122 2006-07-11
  • 打赏
  • 举报
回复
仔细找一下 肯定有的 ()II这种类型的说明。。
大大怪老张 2006-07-11
  • 打赏
  • 举报
回复
恩。。找找。

那个反编译文件 我晓得 我说的是两个参数及其以上的时候 怎么写 是object嘛?好像没写进去啊。。。
yulin001122 2006-07-11
  • 打赏
  • 举报
回复
给你一个建议 最好不好返回复杂的类型,用最原始的类型比较好。
不过string 肯定是没有问题的
建议你去看一本书
核心技术2
那里的JNI的篇章很不错。

2。通过C++对java的方法进行写时,若java方法是两个参数,比如int setNewFlag(int position,boolean bls)。。要传递参数 在C++中的类型怎么设置?

查看用JAVAH 生成的.h文件,那里面有函数传递的规则
不需要你自己去记忆

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧