Pascal-DLL in C++-Programm einbinden
-
Jo, ich habe letztens in Pascal eine DLL geschrieben und compiliert.
Darin habe ich ein paar Standartunktionen von Pascal verewigt, die ich in C++ sehr vermisse. Jetzt frage ich mich allerdings, wie komme ich an die Funktionen ran.
Wie man DLL's einbindet ist mir klar, aber zum einen schreibe ich bei einer C++-DLL immerextern "C"
, was mich doch desorientiert, da es ja ein Pascal-DLL ist, und zum zweiten ist das Problem mit den Parametern.
Eine Prozedur in Pascal würde ich ja dann als Funktion in C++ verwenden. Prozeduren haben aber keinen Rückgabetyp, muss ich dann void nehmen?
Und ist integer in Pascal das Selbe wie int in C++?Also ich brauche echt Hilfe!
Schonmal danke im voraus
der STILLE ZUSCHAUER
-
extern "C"
sorgt glaube ich dafür, daß die Funktionsnamen nicht dekoriert werden, also daß aus "GeileFunktion" C++-mäßig "GeileFunktion@24" wird.
Denn dann könntest Du mit GetProcAddress("GeileFunktion") nicht mehr darauf zugreifen.
int sollten identisch sein.
Eine Pascal-Prozedur ist logischerweise eine C-Funktion mit Rückgabetyp void.
Bei Strings mußt Du aufpassen, da die komplett unterschiedlich in Pascal und C/C++ sind. Kannst die Borland Umwandlungs-Routinen nutzen, dann mußt Du aber die borlandmm.dll (?) mitliefern IIRC (was Du auch darfst IIRC).
Ansonsten ist halt die Parameterübergabe der Knackpunkt (von rechts nach links etc.). Dazu solltest Du mal in der MSDN nach __cldec, __stdcall, __fastcall (?), PASCAL/WINAPI suchen.
-
OK, thx