c ++ .exe и .dll, используя ту же глобальную переменную в .exe? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть игровой движок, где вы можете написать свои собственные сценарии. Мне удалось заставить его работать и динамически загружать сценарии, используя 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 , но каждый раз, когда я использовал его в своем синглтоне, он выдает ошибку "недопустимый" класс хранения.

Похоже, я здесь упускаю критическую концепцию по этому вопросу.

Вы можете мне помочь, мнения любого направления очень ценятся.

...