Как показать ошибку 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 для вас.