Проблема с правильным использованием CEREAL_REGISTER_DYNAMIC_INIT в библиотеке C++ Cereal.C++

Программы на C++. Форум разработчиков
Anonymous
Проблема с правильным использованием CEREAL_REGISTER_DYNAMIC_INIT в библиотеке C++ Cereal.

Сообщение Anonymous »

Я перешел на использование файла lib и хотел правильно использовать CEREAL_REGISTER_DYNAMIC_INIT. Я не знаю, нужно ли мне это использовать, но я заметил проблему с тем, что один из моих типов зернистости не подбирается должным образом в отдельной DLL, и подумал, что это может помочь.
в accountActions.h в конце файла есть следующее:

Код: Выделить всё

CEREAL_FORCE_DYNAMIC_INIT(mv_clientactions);
В accountActions.cpp в верхней части файла есть следующее:

Код: Выделить всё

#include "clientActions.h"

#include "cereal/cereal.hpp"
#include "cereal/types/base_class.hpp"
#include "cereal/types/polymorphic.hpp"
#include "cereal/archives/adapters.hpp"

#include "cereal/archives/portable_binary.hpp"
#include "cereal/archives/json.hpp"

CEREAL_REGISTER_TYPE(CreatePlayer);
CEREAL_REGISTER_TYPE(LoginRequest);
CEREAL_REGISTER_TYPE(FindMatchRequest);
CEREAL_REGISTER_TYPE(ExpectedPlayersNoted);
CEREAL_REGISTER_DYNAMIC_INIT(mv_accountactions);
Предположим, mv_accountactions — это просто полностью составленная строка. У меня нет библиотеки или библиотеки с таким именем, но я решил, что она используется для связи этих двух модулей вместе? Документации мало, и я могу использовать ее неправильно.

Я получаю следующую ошибку:

1> c:\git\bindstone\source\game\networklayer\accountactions.cpp(13): ошибка C2084: функция 'voidheat::detail::dynamic_init_dummy_mv_accountactions(void)' уже имеет тело
1> c :\git\bindstone\source\game\networklayer\accountactions.h(127): примечание: см. предыдущее определение 'dynamic_init_dummy_mv_accountactions'

Я дважды проверил и готов не использовать mv_accountactions где-либо еще... Я не знаю, что может вызвать это и как это решить. Мне интересно, нужен ли мне вообще CEREAL_REGISTER_DYNAMIC_INIT, или есть ли безопасный способ его использования на случай, если я перейду на DLL и просто буду использовать его неправильно.

Будем очень признательны за советы.

Проблема открыта здесь: https://github.com/USCiLab/cereal/issues/523

Подробнее здесь: https://stackoverflow.com/questions/526 ... al-library

Вернуться в «C++»