2010-12-12 1 views
0

Когда, например, я создаю программу и компилирую ее с помощью MinGW, если я удаляю переменную окружения, мне нужно поместить DLL в каталог для ее работы.Получение программы только для работы с определенными DLL в каталоге

т.е. libgcc_s_dw2-1.dll

без него программа даже не запустится.

При разработке с QT я заметил, что мне нужна другая dll в каталоге, это был QtCored4.dll, мне было интересно, как программа знает, что DLL отсутствует?

Также есть ли что-нибудь подобное в программе, как инструкция определения или что-то еще?

Мне нужен ответ, который может работать с C++ :)

ответ

1

Об этом позаботилась операционной системы - так как ваша программа использует функции из DLL, он автоматически загружается при запуске программы, и если DLL отсутствует, вы получите сообщение об ошибке. Подробнее об этом процессе можно узнать в MSDN: Load-Time Dynamic Linking.

1

при разработке с QT я заметил, что я нужен другой DLL в каталоге, это было QtCored4.dll, мне было интересно, как программа знает, что длл отсутствует

Вы также можете попытаться загрузить DLL самостоятельно во время выполнения и обработать неудачу изящно. См. LoadLibrary и GetProcAddress.

+0

Еще лучше, используйте задержку загрузки. Таким образом, компилятор выполняет все вызовы 'GetProcAddress', и вам просто нужно предоставить код восстановления (или сообщения об ошибке), когда« LoadLibrary »терпит неудачу. –

Смежные вопросы