问题标签 [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.
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
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.
c++ - 使用谷物序列化/反序列化 SFML Vectors 类
我正在使用 SFML 和谷物来序列化/反序列化数据,我想为sf::vector2
和sf::vector3
类这样做:
数据.h
主文件
但谷物不知道是什么sf::vectors
,我收到以下错误:
我知道存在,CEREAL_REGISTER_TYPE()
但我不知道如何使它工作。
添加到Data.h:
我收到此错误:
任何想法?
谢谢。
c++ - 在同一程序中使用谷物和增强序列化
我们目前有一个使用大量boost序列化来存储数据的系统。我们正在寻求摆脱这种情况,转而使用谷物。
但是,我们不太可能完全迁移所有序列化对象。至少,我们必须能够反序列化旧版本的数据。
是否可以同时使用 boost 和谷物来序列化同一个对象,最好不必编写两次序列化函数?
我们的代码示例是:
我认为我们没有比这更复杂的事情了。
c++ - 谷物序列化
我在 C++11 中遇到谷物问题(http://uscilab.github.io/cereal/)。
我有一个共享库,我想使用谷类库序列化它的一个类。这是库“我想序列化对象类”的一部分代码:
“对象.hpp”
“对象.cpp”
“对象_p.hpp”
但我得到一个错误:
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 类并调用它的序列化函数吗?
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
函数中使用的代码:
我究竟做错了什么?
haskell - 二进制文件编写器添加了额外的字节
我正在构建一个Conduit
二进制文件,该文件由一个标头组成,后跟一个Double
矩阵作为行排序列表。这是代码:
这几乎可以工作。如果我使用
我得到了预期的文件,但在标题和双打列表之间有一个额外的字节。当使用show
额外字节显示时,如下所示:
知道如何不打印这个字节吗?或者如果它是一个规范的分隔符或其他东西(这样我可以在读者中忽略它)?
编辑:问题似乎发生putListOf
在fromDoubleMatrix
.
c++ - 使用 Redis 客户端从 Ignite 服务器检索对象时谷物中的意外行为
下面是我的示例代码,我通过它尝试使用 IgniteServer 对hiredis 客户端进行基准测试,以在序列化后存储和检索 C++ 类对象。
Person P{10,"John","Cena","Analyst",450000,"Summa"};
当以这种方式创建对象时,程序按预期工作。
当我创建对象首先然后分配值(
),输出为空或客户端挂起。
我不确定幕后发生了什么,因为我对使用谷物库很陌生。我觉得问题出在谷物上,但我想不通。