13

我正在开发一个C++必须处理各种消息类型的应用程序。其中一种类型是serialized Java objects(没有可用的来源)。
我想知道是否有人知道沿线的 C++ 库jdeserialize
对于不熟悉的人,jdeserialize 基本上是解析序列化对象并构建图。
它做得很好,我一直在试验它——使用 JNI 来管理与主程序的交互。
这可以正常工作,但很麻烦。我担心这将是一个令人头疼的维护问题。

4

3 回答 3

4

Java ABI 与 C++ 不兼容,因此您不能这样做。对象以不同的方式在内存中表示(这绝对不是唯一重要的区别,但应该足够了)。

于 2013-06-19T23:40:13.193 回答
0

我将在 JNI 绑定的 JVM 中对其进行反序列化,然后使用 Java 方法将数据转换为 C++ 程序所需的格式。Java 和 C++ 之间有足够多的差异,即使您可以直接在 C++ 中完成,您也必须模拟 Java 环境的大部分内容才能使数据更有意义。

序列化的 Java 对象很少是单个对象,它们通常成为相关对象的“网络”,例如包含 Map 的对象,其中包含许多字符串作为键,将 who-knows-what 作为值。这只是一个嵌入式属性。

于 2013-07-01T20:56:19.467 回答
0

我认为最好的方法是先用 Java 编写代码,然后将该代码转换为 C++。为了更快地开始,首先从 java 中借用知识,逐步实现,并模拟一些特性(无需反序列化 ArrayList)。也许@user888379提到的Jdeserialize的源代码就可以了。无论哪种方式,您可能也想反序列化 Java 中的对象,以便与 C++ 代码进行结构比较。

于 2013-06-25T11:30:45.680 回答