У меня есть игровой движок, где вы можете написать свои собственные сценарии. Мне удалось заставить его работать и динамически загружать сценарии, используя LoadLibrary () & GetProcAddress , хотя кажется, что я застрял.
I у меня есть .dll файл и .exe , они оба используют одну и ту же библиотеку движка, которую я создал. Приложение (.exe) включает игровой движок, поэтому он должен быть хостом моего глобального синглтона. переменная.
Этот код моего скрипта
#include "MyConsoleWriterComponent.h"
#include "../DarkLightEngine/DLE_Engine.h"
void MyConsoleWriterComponent::OnTick()
{
Atom* a = Atom::CreateAtom("Heyo");
OutputDebugString(L"Text Text!\n");
}
Atom :: CreateAtom использует singleton для регистрации текущего игровой объект к сцене. Однако, если вызвать этот метод в .exe , он работает как положено (атом помещен в сцену, все идеально), но когда я экспортирую этот класс и использую его из моего .exe, кажется, не регистрируется в моем .exe-синглтоне.
Я где-то читал, что вы должны пометить синглтон как переменную 'volatile', но, похоже, выдает некоторые ошибки, например, некоторые структуры не принимают переменную volatile (используется в * 10 24 * стека , векторов ), и есть ключевое слово extern , но каждый раз, когда я использовал его в своем синглтоне, он выдает ошибку "недопустимый" класс хранения.
Похоже, я здесь упускаю критическую концепцию по этому вопросу.
Вы можете мне помочь, мнения любого направления очень ценятся.