powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу получить адрес функции в DLL
9 сообщений из 9, страница 1 из 1
Не могу получить адрес функции в DLL
    #34035558
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Есть GATE.DLL - библиотека для работы с пластиковыми картами от СБ РФ и дока
Описаловка...Для выполнения любой операции внешние программы вызывают функцию call_sb_kernel из библиотеки gate.dll. Эта функция описана следующим образом:

extern “C” DWORD call_sb_kernel(
DWORD func,
void *in_arg,
void *out_arg);

Функция использует метод вызова языка С (cdecl).
...
Чем сделана DLL не известно. Почитал форум, RSDN и наваял следующий код (MSVC6SP5):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
typedef DWORD (__cdecl *GATE)(DWORD func, void *in_arg, void *out_arg);

int main(int argc, char* argv[])
{
	GATE call_sb_kernel;
	HMODULE hGate = LoadLibrary("C:\\SC552.win\\gate.dll");
	if(hGate == NULL)
	{
		printf("Can`t load C:\\SC552.win\\gate.dll\n");
	}
	else
	{
		printf("Load C:\\SC552.win\\gate.dll\n");
		call_sb_kernel = (GATE) GetProcAddress(hGate, "call_sb_kernel");
		if(call_sb_kernel == NULL)
		{
			printf("No call_sb_kernel()\n");
		}
		else
		{
			printf("call_sb_kernel() Ok\n");
		}
	}
	return  0 ;
}

Получаю call_sb_kernel == NULL. Как я понимаю - GATE.DLL подгружается, а адрес функции call_sb_kernel получить не удается. Может я что-то не так с параметрами написал в typedef DWORD (__cdecl *GATE)(DWORD func, void *in_arg, void *out_arg) ?
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035666
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T....Получаю call_sb_kernel == NULL. Как я понимаю - GATE.DLL подгружается, а адрес функции call_sb_kernel получить не удается. Может я что-то не так с параметрами написал в typedef DWORD (__cdecl *GATE)(DWORD func, void *in_arg, void *out_arg) ?

явная загрузка дэлеле сводиться к следующим этапам...
1) загрузка самой библиотеки...(лоад лайбрэри возвращает не налл..
2) взятие адреса искомой функции, либо переменной...
3) юзанье...

у Вас не прокатывает второй шаг...Скорее всего не совпадает имена запрашиваемое и декларированное на импорт... как проверить...есть дампбин кажись - та что выводит всю статистику об дэлеле.. воспользуйтесь её и посмотрите какие имена та импортирует... на данном этапе - как Вы объявили фкнцию, что коту намордник...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035682
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T...Есть GATE.DLL - библиотека для работы с пластиковыми картами от СБ РФ и дока...

модуль авторизации поди ? гы.. вот за что я люблю внешнии процессинги - это то, что каждый тянет одеяло в свою сторону... посему ниша пока пустая...а авторизация по уму первая появилась в UCS - под сервак Novell(а)...Правда это первая бесплатная )

(круглый)
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035717
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сработало GetProcAddress(hGate, " _call_sb_kernel ") Похоже на дельфи писано.
Дальше хуже - инициализирую структуры с параметрами, вызываю - вылетает с исключением, но это уже наверно вопрос к тем кто эту GATE.DLL юзал :(
Тут таких нет?
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035766
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tсработало GetProcAddress(hGate, " _call_sb_kernel ") Похоже на дельфи писано.
Дальше хуже - инициализирую структуры с параметрами, вызываю - вылетает с исключением, но это уже наверно вопрос к тем кто эту GATE.DLL юзал :(
Тут таких нет?

это вторая серия...
что нуна..
1) почитать внимательнее по поводу работы со стэком внутри этой дэлеле, и правилом объявления в сях...
2) если не полечилось официально - то запускаем отладчик и вперёд под азмом на мины, а награды потом... Желательно юзать лёгкие функции, без защит, без навороченной логики, где сразу переданные Вами данные проверяются, обрабатываются ышо что-то...
3) попросить примеры юзанья у производителя, где будут задействованы все типы данных...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035772
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tсработало GetProcAddress(hGate, " _call_sb_kernel ") Похоже на дельфи писано.
Дальше хуже - инициализирую структуры с параметрами, вызываю - вылетает с исключением, но это уже наверно вопрос к тем кто эту GATE.DLL юзал :(
Тут таких нет?

При разработке своих dll пользуюсь тотал командером версии больше 6-ти. ;) А потому-что в нем есть плагин просмотра длл, в котором есть их имена. И дополнительными утилитами пользоваться нет необходимости.
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035785
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо kolobok0. Похоже не те структуры в параметры подсунул буду дальше их доки изучать. Хоть бы самплес какой простенький сделали, а то структура, с указателем на другую структуру, там на третью ... крыша уже едет.
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035786
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T вызываю - вылетает с исключением,

Я так понял в параметрах ей передается указатель на функцию? Вы не забываете ее сделать __stdcall?
...
Рейтинг: 0 / 0
Не могу получить адрес функции в DLL
    #34035825
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Заработало. По крайней мере функция инициализации библиотеки выполняется. Буду дальше разбираться.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу получить адрес функции в DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]