java - 如何使用 Java 和 JNI 修改传递给 C++ 例程的原始数据的值?

标签 java c++ java-native-interface

我可以使用 JNI 函数调用将原语从 Java 传递到我的 C++ 函数并在 C++ 函数中修改它的值吗?

到目前为止,我已经看到返回 jstring、jint、jboolean 等的示例,我不想这样做。我知道的另一个选项是在 C++ 中获取原始变量的 ID 并设置它的值。

例如:

JNIEXPORT void JNICALL Java_myFunction
(JNIEnv *, jobject obj, jboolean retJava)

在这里,我从 java 传递 boolean 值,并希望根据我的计算在 C++ 中更改它而无需 return 语句。

最佳答案

很遗憾,您不能使用 JNI 执行此操作。

你可以使用盒装类型来破解它(参见示例 here )但强烈建议不要这样做,因为它可以轻松破坏各种东西(至于到底是什么,请参见评论在链接的问题中)。

关于java - 如何使用 Java 和 JNI 修改传递给 C++ 例程的原始数据的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674410/

相关文章:

java - 如何在java中转义],[序列?

java - 套接字停止发送消息但不超时

c++ - 可以从用户那里检索输入并运行另一个进程吗?

java - 不支持的 JNI 版本 0xFFFFFFFF

c++ - 将全局对象初始化为指针是唯一成功的方法

java - 处理实现通用接口(interface)的枚举(迭代、反序列化)

java - 如何在executorCompletionService中使用concurrentHashMap?

c++ - 具有可变返回类型的函数

c++ - 提前调用对应于ANOTHER模板函数的所有可能的模板函数

Android Studio 未运行显示 "force close"的应用程序