#c #dll #linker #vulkan
Вопрос:
Вот моя программа.
https://github.com/ILLmew/Seagull-Engine-v2
Короче говоря, это крошечный игровой движок, который я написал, чтобы узнать что-то новое, и вот вопрос:
у меня есть SCore.dll для основных средств и всех других модулей это используется для других целей. Теперь у меня есть СРендерерВулкан.dll, которая ссылается на SCore.dll и мое приложение Sandbox.exe какие ссылки SCore.dll и Срендервулкан.библиотека dll во время загрузки, а не во время выполнения.
Как это показано ниже:
SCore.dll -------> SRendererVulkan.dll -------> Sandbox.exe
| ^
| |
-------------------------------------------------
При компиляции в VS2019 в нем нет ошибки компиляции или ошибки ссылки.
И когда я запускаю программу, я ставлю несколько точек останова, чтобы проверить, были ли инициализированы ресурсы для vulkan, и кажется, что вся инициализация прошла успешно, все в порядке. Проверка nullptr не удалась, и это показывает окно. Но когда я закрываю окно и вхожу в стадию завершения работы, оно делает утверждение:
Нарушение доступа, выполняющее местоположение 0x0000000000000000
Я использую premake в качестве инструментов сборки, а все верхние библиотеки DLL ссылаются на eastl.lib и mimalloc.lib.
Я пробую много способов, включая экспорт серверной части SRendererVulkan.dll или экспорт всего класса в VulkanRenderDevice, все они потерпели неудачу.
Я знаю, что это ошибка связывания, но я не могу ее решить, поэтому я пришел сюда и попросил о помощи.
Комментарии:
1. Я сомневаюсь, что это ошибка привязки.
2. В вызове vkDestroyDevice является ли logicalDevice нулевым указателем?
3. Нет, с бэкэндом все в порядке. И я понял, почему это не удалось. Я новый срендервулкан. dll в exe и удалите ее в SCore.dll, поэтому его успешно создавали, но не смогли уничтожить. Моя глупая ошибка.
Ответ №1:
Я новый() СРендерерВулкан.dll в exe — файле и удалите его в SCore.dll. Таким образом, он успешно создан, но не может быть уничтожен. Из-за этой операции возникает сбой при удалении соответствующего блока выделения памяти и, таким образом, приводит к этой ошибке.