"регистрировать" классы со строковыми именами в рантайме за счёт простенького макроса в целевом cpp файле.
И он в принципе замечательно работает, но..
Если всё это (+ пара "зарегистрированных" классов) запечь в динамическую библиотеку, и соответственно потом влинковать в целевую исполняшку.. Оно крашнется с сегфолтом при попытке заинсёртить в std::map (метод testObjRegistry::Registry). Очевидно где-то в инициализации ещё до вызова main
Не мог бы мне кто нибудь на пальцах объяснить почему так?
Целевая платформа винда?
Есть несколько глобальных объектов в разных TU — testObjRegistry::regs, и те, что создаются макросом REGISTRY_TESTOBJ. Порядок их инициализации не опредрелен.
а где __declspec( dllexport )
Решается через синглтон майерса (хранить мару в статической локальной переменной функции, возвращая её по ссылке)
Обсуждают сегодня