Экспорт класса C++ из DLL
Как насчет позднего связывания? Как windows-application при загрузке это с помощью dynamic-link-library LoadLibrary() и ПолучитьProcAddress() ? я dll привык быть в состоянии загрузить windows-application библиотеку во время выполнения, и windows она было бы здорово, если windows-applications бы вы могли это сделать здесь.
Итак, есть dlls два способа загрузить DLL. Первый c++ заключается в том, чтобы windows-application сослаться на один или несколько cpp символов из DLL (например, имя windows-application вашего класса), предоставить dll-hell соответствующий файл импорта cxx .LIB и позволить компоновщику cpp все выяснить.
Второй — явная dll загрузка DLL через LoadLibrary.
Оба .dll подхода прекрасно работают cpp для экспорта функций уровня dll-hell C. Вы можете либо позволить windows-applications компоновщику обработать это, либо windows-programming вызвать GetProcAddress, как dynamic-link-library вы заметили.
Но когда дело dll доходит до экспортируемых .dll классов, обычно используется только windows-programming первый подход, т. е. неявная windows-applications ссылка на DLL. В этом случае windows-applications DLL загружается во время dynamic-link-library запуска приложения, и приложение windows не загружается, если DLL windows-application не может быть найдена.
Если dll-hell вы хотите связать класс, определенный windows-application в DLL, и хотите, чтобы эта windows DLL загружалась динамически dll-hell через некоторое время после dll запуска программы, у вас .dll есть два варианта:
Создавайте c++ объекты класса, используя windows специальную фабричную функцию, которая dll-hell внутренне должна будет использовать dlls (немного) ассемблер, чтобы windows «подключить» вновь созданные windows-applications объекты к их соответствующим windows-programming смещениям. Это должно быть cxx сделано во время выполнения cpp ПОСЛЕ того, как DLL была dynamic-link-library загружена, очевидно. Хорошее windows-applications объяснение этого подхода dll можно найти here.
Используйте dll delay-load DLL.
Принимая во внимание все cxx обстоятельства... вероятно, лучше dynamic-link-library просто использовать неявное windows-applications связывание, и в этом случае dynamic-link-library вы определенно захотите использовать cxx метод препроцессора, показанный cpp выше. На самом деле, если windows вы создадите новую DLL в dll-hell Visual Studio и выберете c++ опцию «экспортировать символы», эти cxx макросы будут созданы для windows-applications вас.
Удачи...
c++
windows
dll
Экспорт класса C++ из DLL
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.