我已经开始使用 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): error C2084: function 'void grain::detail::dynamic_init_dummy_mv_accountactions(void)' has a body 1> c:\git\ bindstone\source\game\networklayer\accountactions.h(127):注意:参见“dynamic_init_dummy_mv_accountactions”的先前定义
我已经仔细检查过,并且没有在其他任何地方使用 mv_accountactions ......我不知道是什么可能导致此问题或如何解决它。我想知道我是否甚至需要 CEREAL_REGISTER_DYNAMIC_INIT,或者是否有一种安全的方法可以使用它,以防我确实移动到 DLL 并且我只是在滥用它。
建议将不胜感激。