Hi, ich habe vor einen Plugin für einen Patches eines Programmes zu schreiben. Der Patch unterstützt Plugins, indem ich mir eine *.dll schreibe. Diese *.dll besitzt nach außen eine Schnittstelle in Form einer Funktion, die die anderen, selbst definierten Funktionen dem Patch vorstellt. Als Beispiel lag ein FreeBasic-Programm bei. Da ich nun nur C/C++ kann, bin ich also hingegangen und habe das ganze zunächst versucht zu adaptieren. Klappte auch soweit, jedoch versaut mir der Compiler die Sache. Die berüchtigte Funktion besitzt den Namen RegisterFunctions und soll auch so exportiert werden. Der Compiler geht aber hin und exportiert das ganze als "?RegisterFunctions@@YA_NHPAULuaDec@@@Z", was übersetzt wohl soviel heißen soll wie "bool __cdecl RegisterFunctions(int,struct LuaDec *)" Wie kann ich dem Compiler beibringen, das er das ganze nicht kodiert? In FreeBasic geht das ganze scheinbar über das Schlüsselwort "Alias", irgendwas äquivalentes kenne ich jedoch nicht und will sich von mir auch nicht in Google finden lassen. Weiß das wer weiter?
du hast eine C++ schnittstelle geschaffen, was du brauchst ist C versucht es mal mit _extern_c (so in der Art, google ist dein freund)
Versuch mal, die Funktion die du exportieren willst mit __stdcall zu deklarieren, also z.B. int __stdcall Deine_Funktion( int arg1, int arg2 ) { .... }
> Versuch mal, die Funktion die du exportieren willst mit __stdcall zu > deklarieren, also z.B. nein das hilft nichts, __stdcall gibt nur an in welcher Reihenfolge die Parameter auf den Stack gelegt werden und wer für den wegräumen zuständig ist. (ist bei Delphi anders)
Yeah, sehr cool. Nachdem ich ein extern "C" eingebaut habe und meine Stringfunktionen angepasst habe, klappt das ganze. Besten Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.