Я разрабатываю библиотеку общего движка для использования в разных приложениях. Но когда я сделал DLL и связал ее с приложением, он начал давать сбой с разными ошибками памяти.
Как я понял, разные кучи DLL и EXE вызывают это. Посмотрите на скриншот: ![enter image description here](https://i.stack.imgur.com/kNpN5.png)
Мне нужен объект в квадратных скобках, но я не могу получить к нему доступ из приложения. Та же история для DLL.
Как мне сделать так, чтобы она использовала одну и ту же кучу или получала прямой доступ к этим объектам?
В linux или mac нет таких ошибок, когда я 'Я создаю общие библиотеки и использую их в приложении. Просто в Windows я не знаю, как заставить его нормально работать. Я уверен, что использование статических библиотек не очень хорошо в этом случае, но я должен найти решение, как заставить его работать спокойно.
Код, где происходит ошибка (это еще один пример, который яОшибка выше возникает, когда я получаю объект из этой иерархии, он существует, но в разных мирах):
if (EditorInstance::GetSingleton()->currentScene->hierarchy->empty())
Где иерархия:
boost::container::list<GameObject*>
in Scene
class.
Я инициализирую список в конструкторе, но когда я пытаюсь использовать его в приложении, он не инициализируется. Хак, который частично решил эту проблему - это getter, который возвращает иерархию: GetHierarchy (). Но для всего объекта такого взлома нет ...
Теперь я могу получить объект из иерархии, но, как показано на скриншоте, он указывает на 2 разных объекта, один из которых определен, как я, и доступен изDLL, и та, которая не определена (я могу определить ее непосредственно перед использованием в приложении, в противном случае она будет существовать только для объектов DLL.) Объект DLL находится в квадратных скобках, объект приложения - root.