gpt4 book ai didi

java - 通过 JNI 将多个参数从 java 传递到 c++ 应用程序

转载 作者:行者123 更新时间:2023-11-28 03:01:42 26 4
gpt4 key购买 nike

在java端,当有消息接收到时,java函数

JavaMessageReceived(int msgNo, int msgLen, int[] msgData, long msgTimestamp)

会被调用,所以消息的信息会存储在msgNo、msgLen、msgData和msgTimestamp中。

然后我想将 msgNo、msgLen 和 msgData、msgTimestamp 中的值传递给 c++ 端(应用程序)中的函数,称为

CppGotMessage(int *no, int *len, int*data, long* timestamp)

当我调用CppGotMessage()时,我会得到接收到的消息的信息。

我如何通过 JNI 执行此操作?(不能使用 JNA 或其他第三方软件)
从这个链接: http://doc-snapshot.qt-project.org/qdoc/qandroidjniobject.html

我注意到 ResigterNatives 对我不起作用,因为当我在 C++ 端调用 CppGotMessage 时,我没有任何参数要传递给 java 函数。我只需要从 java 函数中获取值并将它们存储在我的 CppGotMessage 函数的参数中..

最佳答案

首先你需要声明一个原生java函数:

native JavaMessageNative(int msgNo, int msgLen, int[] msgData, long msgTimestamp);

然后需要在c++部分实现这个方法。调用 javah 将为您的 native 函数创建签名。

在此函数中,您首先需要将 java 类型转换为 native 类型。对于整数,这是微不足道的,但 int[] 您需要使用适当的 JNI 函数。搜索 GetIntArrayElements

之后您可以简单地调用您自己的 CppGotMessage 函数。

关于java - 通过 JNI 将多个参数从 java 传递到 c++ 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com