我正在处理一个必须处理各种消息类型的C++
应用程序。其中一种类型是serialized Java objects
(没有可用的来源)
我想知道是否有人知道jdeserialize
行的C ++库?
对于那些不熟悉它的人,jdeserialize基本上解析序列化对象并构建图形
它做得很好,我一直在试验它 - 使用JNI来管理与主程序的交互。
这工作正常,但很麻烦。我担心这将是一个令人头疼的问题。
答案 0 :(得分:4)
Java ABI与C ++不兼容,所以你不能这样做。对象在内存中以不同的方式表示(它绝对不是唯一重要的区别,但它应该足够了。)
答案 1 :(得分:0)
我认为最好的方法是首先用Java编写代码,然后将代码转换为C ++。为了更快的开始,首先从java借用知识,逐步实现,并模拟一些功能(不需要反序列化ArrayList)。也许@ user888379提到的Jdeserialize的源代码也可以。无论哪种方式,您都可能希望在Java中反序列化对象,以便与C ++代码进行结构比较。
答案 2 :(得分:0)
我会在JNI绑定的JVM中对其进行反序列化,然后使用Java方法将数据转换为C ++程序所需的格式。 Java和C ++之间存在足够的差异,即使你可以直接在C ++中完成它,你也必须模拟Java环境的一大块,以便对数据有很大的了解。
序列化的Java对象很少是单个对象,它们通常成为相关对象的“网络”,例如包含Map的Object,其中有许多字符串作为键来引用who-know-what作为值。这只是一个嵌入属性。