Я перешел на использование файла 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это просто полностью составленная строка.У меня нет библиотеки или библиотеки с именем dll, но я подумал, что она используется для соединения этих двух модулей вместе?Документация редкая, и я могу использовать это неправильно.
Я получаю следующую ошибку:
1> c: \ git \ bindstone \ source \ game \ networklayer \ accountactions.cpp(13): ошибка C2084: функция 'void cereal :: 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