![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
kerser |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Функция GetProcAddress постоянно возвращает 0. Самому разобраться никак не удается. Создал простую dll.
getprocdll.h:
getprocdll.cpp:
Смотрю таблицу экспорта этой dll:
В приложении:
extern "C" нигде не использовал, т. к. в GetProcAddress указал имя функции, которое есть в таблице экспорта dll. По каким причинам GetProcAddress может не возвращать адрес функции? |
||||||||
|
|||||||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 2 Всего: 36 |
Тебе должны помочь GetLastError и Dependency Walker
|
|||
|
||||
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Ужас. Сколько раз ты загружаешь DLL... Есть функция GetModuleHandle. И определись, какое у тебя будет соглашение о вызове - stdcall или по-умолчанию.
|
||||
|
|||||
kerser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Везде поставил __stdcall.
Если до вызова GetModuleHandle вызвать функцию sum, то GetModuleHandle возвращает ненулевое значение. А если нет, тогда 0. Интересно, почему? GetLastError вернул 127 ошибку. Открываю приложение в Independency Walker, там предупреждение: Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. Модуль - mpr.dll. Функция - WNetRestoreConnection. Что с этим можно сделать? |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 2 Всего: 36 |
127 = The specified procedure could not be found.
я не знаю что за "таблицу экспорта" ты смотришь, но с именем функции явно что-то не то... что показывают проверенные временем утилиты относительно экспортируемых функций? (например hiew, dumpbin -exports (из поставки VS) или тот же DW) |
|||
|
||||
kerser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Так это dumpbin и показывает такую таблицу. В командной строке пишу c:\dev-cpp\bin\dumpbin -exports c:\dev-cpp\getproc\libgetproc.a.
|
|||
|
||||
just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: нет Всего: 10 |
для таких функций лучше extern "C", а то из за манглирования гемороя много
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |