在 C++ 中序列化浮点数/双精度数,编译为 WebAssembly
Serializing floats/ doubles in C++, compiled to WebAssembly
我正在尝试在我的 C++ 代码中将 IEEE 754 浮点数/双精度数序列化为字节数组,然后将其编译为 WebAssembly。 (此代码然后作为 eosio 智能合约运行,但我认为这不应该相关)
我的问题是,我发现在 C++ 中有效的每个解决方案在将其编译为 WebAssemby 后都不再有效,给我错误 cause: access violation\n${callstack}
我试过unions,reinterpret_cast和memcpy,都其中给了我上面看到的错误。我真的不明白 Webassembly 是如何工作的,但我有根据的猜测是 Webassembly 不允许像 C++ 那样直接访问内存,因此编译器没有正确的方法来翻译 "standard" C++ 解决方案。
你知道有什么方法可以解决这个问题吗?是否有 C++ 库可以在不使用任何直接访问内存的解决方案的情况下序列化数组?如果没有,您对如何解决这个问题有什么想法吗?
这些错误实际上与 float/double 序列化无关,而是与 string to float/double 函数有关,后者会产生此错误。
我正在尝试在我的 C++ 代码中将 IEEE 754 浮点数/双精度数序列化为字节数组,然后将其编译为 WebAssembly。 (此代码然后作为 eosio 智能合约运行,但我认为这不应该相关)
我的问题是,我发现在 C++ 中有效的每个解决方案在将其编译为 WebAssemby 后都不再有效,给我错误 cause: access violation\n${callstack}
我试过unions,reinterpret_cast和memcpy,都其中给了我上面看到的错误。我真的不明白 Webassembly 是如何工作的,但我有根据的猜测是 Webassembly 不允许像 C++ 那样直接访问内存,因此编译器没有正确的方法来翻译 "standard" C++ 解决方案。
你知道有什么方法可以解决这个问题吗?是否有 C++ 库可以在不使用任何直接访问内存的解决方案的情况下序列化数组?如果没有,您对如何解决这个问题有什么想法吗?
这些错误实际上与 float/double 序列化无关,而是与 string to float/double 函数有关,后者会产生此错误。