Здравствуйте. Я работаю со статической библиотекой, в которой находится точка входа. Соответственно, дабы этой библиотеке передать свои данные, я в глобальном пространстве проекта создаю переменную:
MyScript* script = dynamic_cast<MyScript*>(new MyScript(Register::UserScriptType::Component));
После вызывается конструктор, которые добавляет указатель на мой скрипт в общий контейнер:
bool Register::Registry::RegisterActorWithComponent(Register::UserScript* script, std::string objectName) {
//Check if script cannot be converted
if (dynamic_cast<Register::UserScript*>(script) == nullptr)
return false;
//Later Host will call all UserScript functions
_userScripts.push_back(script);
return RegisterActor(objectName);
}
Всё это происходит до main функции.
Однако когда программа заходит в неё, контейнер вдруг оказывается пустым. И выглядит это так, как будто где-то этот контейнер заново инициализируется, за счёт чего теряет данные.
Вот мой класс регистратора юзер скриптов, который находится в статической библиотеке:
namespace Register {
class UserScript;
class Registry
{
friend class Core::Host;
public:
static std::vector<Register::UserScript*> _userScripts;
public:
~Registry();
static bool RegisterActorWithComponent(Register::UserScript* script, std::string objectName = "Undefined");
static bool RegisterActor(std::string objectName = "Undefined");
private:
static std::unique_ptr<Register::Registry> MakeRegistry();
Registry();
void RegistryStart();
void RegistryLoop();
};
}
Для сборки и библиотеки и екзешника используется CMake
Дайте знать, если вам понадобиться больше информации. Заранее спасибо.