C++ 使用C+中的GREATE_REGISTER_DYNAMIC_INIT正确发出+;谷物库

C++ 使用C+中的GREATE_REGISTER_DYNAMIC_INIT正确发出+;谷物库,c++,c++11,polymorphism,lib,cereal,C++,C++11,Polymorphism,Lib,Cereal,我已经开始使用lib文件,并希望正确地使用graines\u REGISTER\u DYNAMIC\u INIT。我不知道我是否需要使用它,但我注意到一个问题,我的一个仪式化类型没有在单独的DLL中正确拾取,我认为这可能会有所帮助 在accountActions.h中,我在文件末尾有以下内容: CEREAL_FORCE_DYNAMIC_INIT(mv_clientactions); #include "clientActions.h" #include "cereal/cereal.hpp"

我已经开始使用lib文件,并希望正确地使用graines\u REGISTER\u DYNAMIC\u INIT。我不知道我是否需要使用它,但我注意到一个问题,我的一个仪式化类型没有在单独的DLL中正确拾取,我认为这可能会有所帮助

在accountActions.h中,我在文件末尾有以下内容:

CEREAL_FORCE_DYNAMIC_INIT(mv_clientactions);
#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);
在accountActions.cpp中,我在文件顶部附近有以下内容:

CEREAL_FORCE_DYNAMIC_INIT(mv_clientactions);
#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谷物::detail::dynamic\u init\u dummy\u mv\u accountactions(void)”已经有一个主体 1> c:\git\bindstone\source\game\networklayer\accountactions.h(127):注意:请参阅前面对“动态\u init\u dummy\u mv\u accountactions”的定义

我已经仔细检查过了,没有在其他地方使用mv_accountactions。。。我不知道这可能是什么原因,也不知道如何解决。我想知道是否我甚至需要谷物注册动态初始化,或者是否有一种安全的方法来使用它,以防我移动到一个DLL,我只是误用了它

如蒙指教,不胜感激


此处打开的问题:

我似乎已经能够通过使用先前丢失的谷物DLL导出定义谷物力动态初始化来解决此问题

之前(不在VS 2017工作):

之后(固定):