easylogging ++ как избежать многократного инициализации

моя 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

3

Решение

Похоже что макрос INITIALIZE_EASYLOGGINGPP определяет переменную. Если вы включите заголовочный файл в несколько переводческие единицы тогда ты сломаешь одно определение правила и получит ошибку.

Простое решение — вызвать только макрос один раз во всем вашем проекте, делая это в одном исходном файле.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]