Точка входа процедуры не может быть расположена в ядре библиотеки динамической связи.файл DLL
Я конвертирую свой проект в использование DLL и пытаюсь разбить мой Singleton
класс, чтобы избежать использования шаблонов.
мой класс LudoMemory
, первоначально унаследовал от Singleton
. Я пытаюсь дать ему функции, чтобы уничтожить и создать себя сейчас, и мой главный двигатель не полагается на Singleton
.
Я написал простой метод уничтожения, такой как:
LudoMemory *memory_Singleton = NULL;
void LudoMemory::Destroy()
{
LUDO_SAFE_DELETE(m_Singleton)
}
и при запуске программы (без ошибок компилятора) я получаю это ошибка:
точка входа процедуру ?Уничтожить@LudoMemory@ @ SAXXZ не удалось находиться в динамической библиотеке ссылок Людокор.dll файлы
LudoCore
проект LudoMemory
принадлежит. Почему это происходит? Как я могу ее решить?
3 ответов
У вас нет нескольких версий ludocore.DLL в вашей системе, не так ли? Ошибки точек входа процедуры обычно означают: вы скомпилировали свой проект против ludocore.lib версии x, и при запуске программы он использует ludocore.dll версия y, а версия y не определяет LudoMemory:: Destroy().
ответ Джейкоба о нескольких версиях DLL кажется вероятным.
кроме того, в некоторых системах сборки необходимо явно указать, какие функции будут экспортироваться в DLL.
исследуйте среду сборки и посмотрите, нужно ли предоставить список методов для экспорта в качестве точки входа.
в среде сборки Visual Studio также можно попробовать отключить ссылки в настройках оптимизации компоновщика [ нет (/OPT:NOREF)]