У меня есть общий файл заголовка, который будет использоваться в моих c библиотеках, dll и exe. Stati c lib связана с моими exe и dll. И Dll загрузит exe. Для одного из требований я хотел использовать глобальную карту, которая будет использоваться как в dll, так и в exe, но я не мог, поскольку инициализация не разрешена в заголовке (возникла множественная ошибка переопределения). Итак, я использовал встроенную функцию C ++ 17.
В моем файле заголовка я объявил карту, подобную этой.
enum class eCategory
{
eInvalid = 0,
eCategory1 = 1,
eCategory2,
eCategory3,
eCategory4
};
inline std::map<eCategory, std::string> testCategoryMap{
{ eCategory::eCategory1, "Category1" },
{ eCategory::eCategory2, "Category2"},
{ eCategory::eCategory3, "Category3"},
{ eCategory::eCategory4, "Category4" },
{ eCategory::eInvalid, "Invalid" }
};
Когда я пытался выполнить свой exe, я получаю динамический c при выходе деструктора cra sh проблема. Эта ссылка предложила мне использовать atexit (), но не знаю, как это реализовать.
Может ли кто-нибудь помочь мне решить эту проблему.
Примечание: я просто заменил inline на stati c и добавил его внутри пространства имен, и он работает нормально. Любой вред при использовании stati c?