gpt4 book ai didi

java - 有没有人试图通过 JNI 将 protobuf 对象从 C++ 返回到 Java?

转载 作者:行者123 更新时间:2023-11-30 04:23:11 25 4
gpt4 key购买 nike

我有一个 Java 代码,它通过 JNI 调用 native C++ 代码。今天,C++ 代码生成的结果作为 XML 字符串返回。

我想用 Protocol Buffers 对象替换它。

现在,在生成 PB 对象后我有两个选择:

  • 序列化为字符串并返回
  • 尝试返回对象本身。

有人试过第二种方法吗?它会工作吗?有什么潜在问题吗?

谢谢。

最佳答案

关于“Protocol Buffers object”的含义,您的问题有些不清楚。我假设您指的是消息对象,由 protoc.proto 文件生成。那我敢说不行。虽然 PB 序列化形式确实是跨平台和跨语言的,但实现却不是。由于 JNI 提供了大量 C 函数,您可以在 C(++) 中调用 Java 对象的方法,但没有反向接口(interface)可以从 Java(在 C++ 对象上)执行相同的操作。

但无论如何,PB 对象只不过是一个检测结构。该检测仅对 PB 序列化有用。如果你不会使用序列化,PB 对你来说基本上是无用的。如果你的 XML 至少有一些稳定的结构(PB 无论如何不会适应未知的结构),你为什么不在普通的 Java 对象中反射(reflect)它,在 C++ 端通过 JNI 传递它并在那里填充,使用提到的所有 JNI 函数?

关于java - 有没有人试图通过 JNI 将 protobuf 对象从 C++ 返回到 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493953/

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