java - 如何在 JNI 中将 Java 长对象传递给 C

标签 java android c java-native-interface

这适用于 Java 字符串:

public native Entity[] getALLEntityTYPES(String entityType);  
<小时/>
extern "C"
JNIEXPORT jobjectArray JNICALL
Java_my_jni_project_getALLEntityTYPE(JNIEnv *env, jobject instance, jstring entityType_) {

    const char *entityType = env->GetStringUTFChars(entityType_, 0);
<小时/>

如何在 JNI 中将 Java 长对象传递给 C:

public native String getEntityTypeByEntityGUID(Long entityGUID);
<小时/>

提前谢谢大家。

最佳答案

如果您可以传递 long 而不是 Long,请查看此处传递基本类型的完整示例

http://jnicookbook.owsiak.org/recipe-No-011/

如果你想传递 Long (作为对象),请看这里

http://jnicookbook.owsiak.org/recipe-No-020/

其中显示了从对象获取值的示例代码。当然,在您的情况下,您需要访问 Long 类的字段。

更新

对于拆箱(LongBooleanInteger 等)示例,请查看此处:

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo055

关于java - 如何在 JNI 中将 Java 长对象传递给 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51588895/

相关文章:

java - 如何在 Spring Data JPA 中为自定义 @Query 提供和使用 varargs 或 Iterable 参数?

java - 从上到下堆叠 Swing 元素

android - Xamarin WebViewClient onLoadResource/onPageFinished

java - 将数组传递给另一个类和 asynctask

c - 如何在 C 编程中访问不完整类型的成员

c - 在 C 中,将数组作为 *arr 和 *arr[] 传递给函数有什么区别?

c - 为什么 'z'中存储的值为35?难道不应该是20吗,因为在函数 'c=*b'中(c等于*b指向的值)?

java - Java 字符串合并排序

java - 如何从部署在 docker 上的应用程序连接到外部服务?

Android 应用程序在模拟器中工作但不在设备中