DLL Kommunikation...
Übersicht BlitzMax, BlitzMax NG Allgemein
TheShadowModeratorBetreff: DLL Kommunikation... |
So, Feb 27, 2005 11:46 Antworten mit Zitat |
|
---|---|---|
So... hier möchte ich ein Beispiel posten was z.B. mit BBmax möglich...
z.B. möchte ich dynamisch eine Funktion in einer DLL-Datei aufrufen. Dazu wird die DLL geladen und dann die Adresse von dieser Funktion gesucht. Dann wird ein Function Pointer auf diese Adresse gesetzt. So... Im übrigen wird auch noch die Adresse einer Bmax-Funktion (egal ob z.B. DrawLine oder gar eine eigene) an die DLL-Funktion übergeben. Die DLL Datei ruft dann diese "in der EXE" auf... So kann man nicht nur auf DLL-Funktionen zugreifen, sondern die DLL kann auf BB-Funktionen zugreifen... Das bringt natürlich ganz neue Möglichkeiten... Code: [AUSKLAPPEN] Graphics 640,480,0 Local dll :Int =LoadLibraryA("dummy.dll") Local addr1:Int =Int(GetProcAddress(dll,"func1@24")) Local addr2:Int =Int(Byte Ptr(DrawLine)) Local func1:Int (v0:Int, v1:Float, v2:Float, v3:Float, v4:Float, v5:Int) "Win32" (Int Ptr(Varptr(func1)))[0]=addr1 Print dll +" <dummy.dll" Print addr1+" <func1@24" Print addr2+" <func2" For i=1 To 100 func1(addr2,Rand(0,639),Rand(0,479),Rand(0,639),Rand(0,479),0) Next Flip WaitKey End Code: [AUSKLAPPEN] //MINGW #define DLLDECL extern "C" __declspec(dllexport) #define STDCALL __stdcall #define CDECL __cdecl DLLDECL int STDCALL func1(int (*func2)(float,float,float,float,int), float a, float b, float c, float d, int e); DLLDECL int STDCALL func1(int (*func2)(float,float,float,float,int), float a, float b, float c, float d, int e) { return func2(a,b,c,d,e); } |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group