代码之家  ›  专栏  ›  技术社区  ›  ghiboz

easylogging++如何避免多次初始化

  •  3
  • ghiboz  · 技术社区  · 6 年前

    我的dll有2个入口点,我希望使用 EasyLogging++ 两个条目。。

    #pragma once
    #ifndef EASYLOGGING_LOADER_H
    #define EASYLOGGING_LOADER_H
    
    #include "easylogging++.h"
    
    INITIALIZE_EASYLOGGINGPP
    
    #endif
    

    但是包含了这个文件,我得到如下错误:

    Error   LNK2005 "class std::shared_ptr<class el::base::Storage> el::base::elStorage" (?elStorage@base@el@@3V?$shared_ptr@VStorage@base@el@@@std@@A) already defined in gInput.obj
    

    有什么办法解决这个问题吗?谢谢

    另外,我用的是 Easylogging++ v9.96.4

    1 回复  |  直到 6 年前
        1
  •  4
  •   Some programmer dude    6 年前

    似乎宏 INITIALIZE_EASYLOGGINGPP 定义变量。如果将头文件包含在多个 translation units the one definition rule 会出错。

    简单的解决方案是只调用宏 一旦