![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Всем привет! У меня такой вопрос: как происходит загрузка DLL, я имею ввиду происходят ли какие-то функции инициализации или же библиотека просто загружается в память? И еще, почему библиотека может не загрузиться (LoadLibrary возвращает NULL), если сама библиотека есть, т.е. система может ее найти на 100%.
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
Вызывается ф-я DllMain, об этом можно почитать в MSDN или у Рихтера.
Не загрузиться может по разным причинам, например разные архитектуры dll и exe. Смотри что возвращает GetLastError. |
|||
|
||||
| GSasha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 23.3.2008 Где: Ukraine Репутация: нет Всего: нет |
Создай проект на MFC DLL и посмотри как все организовано
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Посмотри флаги LoadLibraryEx. Есть возможность загрузить DLL как данные, не вызывая DllMain и не разрешая внешних ссылок. В этом случае DLL не загружается, только если не найдена. Если DLL загружается стандартно (как делает LoadLibrary), то должны быть разрешены ссылки (т.е. подгружены все DLL, на которые твоя ссылается), и если хоть одна не найдена или не экспортирует нужных функций - DLL не загрузится. Дальше будет вызвана DllMain, которая тоже может вернуть 0 и привести к выгрузке по каким-то своим причинам. Смотри GetLastError, короче
-------------------- ... |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
всем спасибо, но проблема решалась оч. просто: я затупил и поставил в проекте Visual Studio поддержку юникода, а название либы передавала обычной строкой
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |