Сериализация float / doubles в C ++, скомпилированная в WebAssembly - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь сериализовать плавающие / удваиваемые значения IEEE 754 в байтовые массивы в моем коде C ++, который затем компилируется в WebAssembly. (Затем этот код выполняется как умный контракт eosio, но я считаю, что это не должно быть актуально)

Моя проблема заключается в том, что каждое найденное мной решение, которое работает в C ++, больше не работает после компиляции его в WebAssemby , выдавая мне ошибку cause: access violation\n${callstack}

Я пытался union s, reinterpret_cast и memcpy , все из которых дали мне замеченную ошибку над. Я не очень понимаю, как работает Webassembly, но мое обоснованное предположение состоит в том, что Webassembly не позволяет прямой доступ к памяти, как это делает C ++, и поэтому компилятору не удается правильно перевести «стандартные» решения C ++.

Знаете ли вы какой-нибудь способ решить эту проблему. Возможно, есть библиотеки C ++, которые сериализуют массивы без использования каких-либо решений, напрямую обращающихся к памяти? А если нет, возможно, у вас есть какие-либо идеи относительно того, как бы вы решили эту проблему?

1 Ответ

0 голосов
/ 09 января 2020

Ошибки на самом деле не имели ничего общего с сериализацией float / double, а скорее со строкой для функций float / double, которые выдают эту ошибку.

...