问题标签 [cereal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1483 浏览

c++ - 反序列化谷物 PortableBinaryArchive 遇到问题

我面临一个 std::length 异常,使用谷物库反序列化一个充满我自己的类的 std::vector。我认为如果我给出一些代码是最简单的。这是我的课:

idxs 成员不一定总是具有相同的大小。经过一些计算,我得到一个

我想序列化,然后在另一个应用程序中反序列化。这是我的序列化代码:

生成的数据文件不是空大小,也不是全为零,所以从外观上看是可以的。这是我在其他应用程序中反序列化的方法:

当我运行这个反序列化代码时,我得到一个异常“std::length_error”。与此错误相关的讨论在这里,但对我来说似乎与我的情况无关。(或者是吗?)

我尝试使用单独的加载/保存函数进行反序列化/序列化,因为我不确定谷物文档的这一部分是否适用于此处:

如果可能,最好使用单一的内部序列化方法,尽管在必要时可以使用拆分方法(例如,在加载类时动态分配内存)。

我还尝试在基于范围的 for 循环中分别归档 idxs 成员的每个向量元素(就像它在内部谷物中完成的那样),但这两件事都没有帮助。

这两个应用程序都使用 Visual Studio 2015 Update 3 编译。我使用当前的谷物 v1.2.2,但也尝试使用谷物 v1.1.2,这给了我一个有点相同的序列化结果。

顺便说一句:它适用于谷物 JSON 档案。但只有在我将序列化调用更改为

而当向量成员首先出现在序列化时,它不适用于 JSON。但这可能完全不相关。

现在我的问题:

1)这是序列化应该与谷物一起使用的方式吗?

2)我需要添加更多的序列化函数吗?例如枚举类?

最好的问候 AverageCoder

0 投票
1 回答
239 浏览

c++ - Cereal: Shared serialization function across enums

Lets suppose I have something like:

I want to use (in cereal) a common save_minimal, such as:

It compiles but seems like cereal is ignoring the template. It just use the "integer" value of the enum.

0 投票
1 回答
459 浏览

c++ - 使用谷物序列化/反序列化 SFML Vectors 类

我正在使用 SFML 和谷物来序列化/反序列化数据,我想为sf::vector2sf::vector3类这样做:

数据.h

主文件

但谷物不知道是什么sf::vectors,我收到以下错误:

我知道存在,CEREAL_REGISTER_TYPE()但我不知道如何使它工作。

添加到Data.h

我收到此错误:

任何想法?

谢谢。

0 投票
1 回答
1560 浏览

c++ - 谷物:反序列化没有默认构造函数的对象向量

0 投票
1 回答
238 浏览

c++ - 在同一程序中使用谷物和增强序列化

我们目前有一个使用大量boost序列化来存储数据的系统。我们正在寻求摆脱这种情况,转而使用谷物。

但是,我们不太可能完全迁移所有序列化对象。至少,我们必须能够反序列化旧版本的数据。

是否可以同时使用 boost 和谷物来序列化同一个对象,最好不必编写两次序列化函数?

我们的代码示例是:

我认为我们没有比这更复杂的事情了。

0 投票
2 回答
2295 浏览

c++ - 谷物序列化

我在 C++11 中遇到谷物问题(http://uscilab.github.io/cereal/)。

我有一个共享库,我想使用谷类库序列化它的一个类。这是库“我想序列化对象类”的一部分代码:

“对象.hpp”

“对象.cpp”

“对象_p.hpp”

但我得到一个错误:

0 投票
0 回答
105 浏览

c++ - 显式链接 DLL 会导致异常

我在 Windows (DLL) 上使用带有动态库的谷物时遇到问题。我已阅读谷物网站上的文档。但是,所有文档和示例都隐式链接 DLL,而我需要能够显式链接我的 DLL。我制作了一个示例项目来向您展示我的设置以及我卡在哪里。

该项目分为三个项目,2个DLL和一个可执行文件。第一个 DLL (Object.dll) 包含一个名为 Object 的基类。该 DLL 隐式链接到第二个 DLL (Script.dll),后者实现了一个名为 Script 的派生类。然后将此 DLL 显式链接到可执行文件 (Main.exe)。

对象.dll:

对象.h

Object.cpp 是空的,所以我省略了它。

脚本.dll:

脚本.h

脚本.cpp

主程序

当然,目前它会抛出异常 UNREGISTERED_POLYMORPHIC_EXCEPTION,因为我没有注册我的 Script 类。这也是我的问题,根据我所阅读的内容,我应该将宏 CEREAL_REGISTER_DYNAMIC_INIT 添加到我调用 CEREAL_REGISTER_TYPE 的源文件中,这将是 Script.h 文件,因为我无法将其添加到源文件中多态性文档。我还应该将 CEREAL_FORCE_DYNAMIC_INIT 添加到包含在主应用程序中的标头中,但我没有在任何地方包含 Script.h 文件。

我试图将每个宏放在不同的地方(不包括在 main.exe 中),但我没有让它工作。有人知道这两个函数应该去哪里以便我可以注册我的 Script 类并调用它的序列化函数吗?

0 投票
1 回答
2824 浏览

c++11 - 无法用 Cereal 序列化 std::vector

我是序列化的新手,我在使用Cereal librarystd::vector序列化对象时遇到了麻烦。这是一个说明问题的示例:

尝试序列化ints对象或Victor对象会导致error C2338: cereal could not find any output serialization functions for the provided type and archive combination.

这是我在main函数中使用的代码:

我究竟做错了什么?

0 投票
1 回答
85 浏览

haskell - 二进制文件编写器添加了额外的字节

我正在构建一个Conduit二进制文件,该文件由一个标头组成,后跟一个Double矩阵作为行排序列表。这是代码:

这几乎可以工作。如果我使用

我得到了预期的文件,但在标题和双打列表之间有一个额外的字节。当使用show额外字节显示时,如下所示:

知道如何不打印这个字节吗?或者如果它是一个规范的分隔符或其他东西(这样我可以在读者中忽略它)?

编辑:问题似乎发生putListOffromDoubleMatrix.

0 投票
0 回答
76 浏览

c++ - 使用 Redis 客户端从 Ignite 服务器检索对象时谷物中的意外行为

下面是我的示例代码,我通过它尝试使用 IgniteServer 对hiredis 客户端进行基准测试,以在序列化后存储和检索 C++ 类对象。

Person P{10,"John","Cena","Analyst",450000,"Summa"};当以这种方式创建对象时,程序按预期工作。

当我创建对象首先然后分配值(

),输出为空或客户端挂起。

我不确定幕后发生了什么,因为我对使用谷物库很陌生。我觉得问题出在谷物上,但我想不通。