Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с вызовом ф-ции из библиотеки / 6 сообщений из 6, страница 1 из 1
25.02.2004, 16:05
    #32421212
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с вызовом ф-ции из библиотеки
есть Dll написаная на BCB
вызываю ее из проекта на VC
возникли некоторые проблемы(в частности проект падает)

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
	typedef struct{
	  char * Buffer; //ссылка на буфер, сод-й передаваемую(принимаемую) информацию
	  unsigned int Size; //размер блока передаваемой(принимаемой) информации
	  int Speed;
	}TBufferInfDK;

	typedef TBufferInfDK* PBufferInfDK;

	typedef	int	TRANSPORT;
	typedef TRANSPORT(* LPFNDLLFUNC_INIT)( char*, unsigned int, TBufferInfDK*& );
	typedef TRANSPORT(* LPFNDLLFUNC_SEND)( char*, unsigned int, TBufferInfDK*& );
	typedef TRANSPORT(* LPFNDLLFUNC_FREE)( char* );
	typedef TRANSPORT(* LPFNDLLFUNC_CLOSE)();

	
	
	CString sPasswordString;
	LPCTSTR lpLibFileName;
	HMODULE transp;
	TRANSPORT    tTRANSPORT;
	LPFNDLLFUNC_INIT	lpfnDllFunc_init;
	LPFNDLLFUNC_CLOSE	lpfnDllFunc_close;
	LPFNDLLFUNC_SEND	lpfnDllFunc_send;
	LPFNDLLFUNC_FREE	lpfnDllFunc_free;
	DWORD dwParam1;
	UINT  uParam2, uReturnVal;
	TBufferInfDK		Answer;
	transp = ::LoadLibrary(pMainFrame->GetMainDirectory()+ "transp2.dll" );
	if (transp != NULL)
	{
		lpfnDllFunc_init =	(LPFNDLLFUNC_INIT)GetProcAddress(transp, "WaitInitNetClient" );	//Инициализация клиента
		CTime t = CTime::GetCurrentTime();

		CString tmp;
		tmp.Format( "BF4.EXE;4 . 0 ;%s;регистрация",t.Format( "%Y%m%d" ));
		
		char* ch = new char[tmp.GetLength()];
		ch = tmp.GetBuffer(tmp.GetLength());
	
		if(lpfnDllFunc_init) 
		{
			TBufferInfDK Answer,*pAnswer = &Answer;
			uReturnVal = lpfnDllFunc_init(ch, sizeof(ch), pAnswer);
		}
		else
		{
			AfxMessageBox( "Ошибка регистрации на сервере!!!\r\nПроверьте правильность настроек в файле net.ini" );
			return FALSE;
		}
	}
	else 
	{
		AfxMessageBox( "Отсутствует транспортная библиотека transp2.dll" );
		return FALSE;
	}

Помогите падает на строке:
Код: plaintext
uReturnVal = lpfnDllFunc_init(ch, sizeof(ch), pAnswer);

вот как описана ф-ция в библиотеке:
Код: plaintext
1.
extern  "C"  void __export _stdcall WaitInitNetClient( char * Buf, unsigned int Size,
  TBufferInfDK * &res );


--
...
Рейтинг: 0 / 0
25.02.2004, 16:23
    #32421263
_Konst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с вызовом ф-ции из библиотеки
Первое, что приходит в голову - в библиотеке _stdcall,
а у тебя _cdecl по умолчанию
попробуй
typedef TRANSPORT(_stdcall * LPFNDLLFUNC_INIT)( char*, unsigned int, TBufferInfDK*& );
...
Рейтинг: 0 / 0
25.02.2004, 16:38
    #32421312
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с вызовом ф-ции из библиотеки
_Konst спасибо.
Но это я увидел когда нажал кнопку опубликовать :)
У меня начала работать только не с _stdcall, а с CALLBACK
--
...
Рейтинг: 0 / 0
25.02.2004, 16:44
    #32421328
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с вызовом ф-ции из библиотеки
Второе что приходит в голову, а зачем так сложно?

Код: plaintext
1.
hModule = LoadLibrary( "name.dll" );
fptr = ( /*type_cast*/ )GetProcAddress(hModule, "NameOfFunction" );
...
Рейтинг: 0 / 0
25.02.2004, 17:04
    #32421376
_Konst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с вызовом ф-ции из библиотеки
DJStealthУ меня начала работать только не с _stdcall, а с CALLBACK
???
Мне всегда казалось, что под Windows
#define CALLBACK __stdcall
#define WINAPI __stdcall
...
Рейтинг: 0 / 0
26.02.2004, 11:32
    #32422122
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с вызовом ф-ции из библиотеки
Не знаете что за прикол, если сидишь в трансляторе, то ф-ция из библиотеки не вызывается, а если так запускать, то вызывает и нормально работает?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с вызовом ф-ции из библиотеки / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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