Potrzebuję zadeklarować wskaźnik na funkcje ... tyle, że w momencie gdy go deklaruję w programie nie wiem jeszcze jaki będzie prototyp tej funkcj (to są informacje pobierane od usera).
Oto schemat działania programu w uproszczeniu:
// PROGRAM POBIERA OD USERA NAZWE BIBLIOTEKI DLL ORAZ
// NAZWE FUNKCJI EXPORTOWANEJ PRZEZ TA BIBLIOTEKE.
// NASTEPNIE MIERZY CZAS JEJ WYKONANIA I WYSWIETLA
// WYNIK POMIARU:
//
// 01). - LADOWANIE BIBLIOTEKI KTOREJ NAZWA ZNAJDUJE SIE
// W POLU IDC_EDIT_LIBRARY.
// 02). - POBIERANIE ADRESU FUNKCJI KTOREJ NAZWA ZNAJDUJE SIE
// W POLU IDC_EDIT_FUNCTION.
// 03). - POBIERANIE TIMERAX (QueryPerformanceCounter).
// 04). - WYWOLANIE FUNKCJI KTOREJ ADRES ZOSTAL USTALONY
// W PUNKTACH. 01, 02.
// 05). - PONOWNY POMIAR CZASU (TIMERY).
// 06). - OBLICZANIE ROZNICY CZASU.
// 07). - WYSWIETLANIE CZASU WYKONANIA.
oto fragment kodu z problemem:
HMODULE lhmod = LoadLibrary( libname );
if( lhmod == NULL )
{
ShowError( "NIE MOZNA ZALADOWAC PODANEJ BIBLIOTEKI" );
break;
}
FARPROC lpfn = GetProcAddress( lhmod, fname );
if( lpfn == NULL )
{
ShowError( "NIE MOZNA UZYSKAC ADRESU \
WSKAZANEJ PROCEDURY" );
break;
}
QueryPerformanceCounter( & tx );
( lpfn )();
QueryPerformanceCounter( & ty );
W takim ukladzie dziala tylko dla funkcji bez argumentowej np. kernel32.dll\GetLastError
Niby przychodzi mi do głowy rozwiązanie - tyle, że wymagało by wstawki asemblera gdzie wrzucam argumenty na stos przed wywołaniem testowanej fukcji.
No tyle, że właśnie chciał bym to w c++ zrealizować. Da się to zrobić ?