Как показать ошибку Windows "DLL not found" в моей программе на C++?

Я искал то, что я ищу на этом сайте; но я не понимаю

Итак, я написал этот вопрос.

Я написал файл.dll и программу на C++ (Code Blocks IDE). Если DLL-файл и программа находятся в одном каталоге, моя программа будет работать.

Но если я удаляю файл dll и запускаю свою программу, Windows показывает мне эту ошибку:

"Перестал работать xxx.exe."

Я хочу "Программа не может запуститься, потому что xxx.dll отсутствует на вашем компьютере." сообщение вместо этого.

Что я должен делать?

1 ответ

Есть три вида ссылок, которые вы можете сделать.

  • Связывание во время загрузки - это когда DLL загружается автоматически при запуске вашей программы. Windows находит эту DLL обычно в той же папке, что и исполняемый файл.
  • Связывание во время выполнения - это когда вы специально загружаете DLL, вызывая LoadLibrary в своем коде.

Когда приложение вызывает функции LoadLibrary или LoadLibraryEx, система пытается найти библиотеку DLL (подробнее см. Порядок поиска в библиотеке Dynamic-Link). Если поиск успешен, система отображает модуль DLL в виртуальное адресное пространство процесса и увеличивает счетчик ссылок. Если вызов LoadLibrary или LoadLibraryEx указывает библиотеку DLL, код которой уже сопоставлен с виртуальным адресным пространством вызывающего процесса, функция просто возвращает дескриптор библиотеки DLL и увеличивает счетчик ссылок на библиотеку DLL. ~ взяты отсюда

То, что вы хотите сделать, это ссылка во время выполнения на вашу DLL и проверить результат вместо того, что вы делаете в настоящее время.

  • Visual Studio предлагает третий вариант - библиотеки с задержкой загрузки.~ MSalters

который обрабатывает вызовы loadLibrary для вас.

Другие вопросы по тегам