powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с вызовом ф-ции из библиотеки
6 сообщений из 6, страница 1 из 1
Помогите с вызовом ф-ции из библиотеки
    #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
Помогите с вызовом ф-ции из библиотеки
    #32421263
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первое, что приходит в голову - в библиотеке _stdcall,
а у тебя _cdecl по умолчанию
попробуй
typedef TRANSPORT(_stdcall * LPFNDLLFUNC_INIT)( char*, unsigned int, TBufferInfDK*& );
...
Рейтинг: 0 / 0
Помогите с вызовом ф-ции из библиотеки
    #32421312
DJStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Konst спасибо.
Но это я увидел когда нажал кнопку опубликовать :)
У меня начала работать только не с _stdcall, а с CALLBACK
--
...
Рейтинг: 0 / 0
Помогите с вызовом ф-ции из библиотеки
    #32421328
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второе что приходит в голову, а зачем так сложно?

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


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