Raj*_*dra 3 java java-native-interface android-ndk
我必须通过一个结构
struct Info {
u_int8_t timestamp[8];
u_int32_t a;
u_int32_t b;
u_int32_t c;
ActiveInfo activeInfo[MAX_ACTIVE_SET];
};
struct ActiveInfo
{
u_int8_t is_reference;
u_int16_t p;
u_int32_t q;
u_int8_t r;
u_int8_t s;
};
typedef struct ActiveInfo ActiveInfo;
Run Code Online (Sandbox Code Playgroud)
我想将这个(信息)结构传递给我的java代码。我已经仔细研究过,但没有得到完整的方法来做到这一点。
谢谢。
该结构必须在 Java 端定义为具有成员的类。事实上,JNI允许C访问Java对象,但不允许Java访问C对象(结构体)。因此,如果您想通过 JNI“传递”某些内容并使其在两端都可访问,那么它必须是一个 Java 对象,然后按照jobject接口中的方式进行限定。从C端来看,你有两个选择:
GetFieldID()要么直接使用and访问成员Get/Set<Type>Field,尽管数组更复杂(我看到了一些)Invoke<Retval>Method这取决于您的数据存储的设计。你也许只想一侧(C或Java)读,另一侧写,这可以方便地体现在设计中。
编辑:
示例可以在 @asgoth 指出的网站上找到:www.steveolyo.com。有一个章节名为“将 C 结构从 C 传递到 Java”,但它默默地解释了如何在 Java 类中反映所需的 C 结构并通过 JNI 将 Java 对象传递到 C - 这正是我的回复所说的。
| 归档时间: |
|
| 查看次数: |
7320 次 |
| 最近记录: |