Dynamisches laden will nicht :(
-
Hi,
ich wollte die MessageBoxA-Funktion aus der user32.dll laden, doch das klappt nicht

#include <windows.h> typedef int (*msgbox)(HWND, LPCSTR, LPCSTR, UINT); int __stdcall WinMain (HINSTANCE instance, HINSTANCE prevInstance, char* cmd, int show) { HMODULE hDll; msgbox f1; hDll = LoadLibrary("user32.dll"); if(hDll==NULL)return -1; f1 = (msgbox)GetProcAddress(hDll,"MessageBoxA"); if(f1==NULL) { FreeLibrary(hDll); return 0; } FreeLibrary(hDll); f1 (NULL, "Hallo", "", MB_OK); return 0; }Wo liegt der Fehler?

-
er stürzt einfach bei "f1 (NULL, "Hallo", "", MB_OK);" ab

-
Warum verwendest du die Funktion nicht direkt?! Ansonsten: Nach FreeLibrary ist der Funktions-Pointer natürlich ungültig!
-
flenders schrieb:
Warum verwendest du die Funktion nicht direkt?!
Weil ich mir irgendeine Funktion rausgesucht habe zum lernen? Muss man sich neuerdings für alles rechtfertigen? zakre...
-
Achja: programm schmiert noch immer einwandfrei ab:
#include <windows.h> typedef int (*msgbox)(HWND, LPCSTR, LPCSTR, UINT); int __stdcall WinMain (HINSTANCE instance, HINSTANCE prevInstance, char* cmd, int show) { HMODULE hDll; msgbox f1; hDll = LoadLibrary("user32.dll"); if(hDll==NULL)return -1; f1 = (msgbox)GetProcAddress(hDll,"MessageBoxA"); if(f1==NULL) { FreeLibrary(hDll); return 0; } f1 (NULL, "Hallo", "", MB_OK); FreeLibrary(hDll); return 0; // <<<<<<<<<<<<<<<<<<<<<<<<<< }diesmal jedoch bei return 0;
-
typedef int (__stdcall *msgbox)(HWND, LPCSTR, LPCSTR, UINT);