Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#

  Alt 17. Feb 2013, 09:22
Zitat:
Mein Verständnis von Interfaces war bis jetzt, dass ich damit eine externe Schnittstelle für ein Programm schaffen kann um zum Beispiel PlugIns zuzulassen.
Das sit ja auc richtig. Aber nur Funktionen aufrufen reicht nicht, der Computer muss auch wissen wie er die Funktionen aufrufen muss. dazu gehören solche Sachen wie "In welcher reihenfolge werden die Parameter übergeben?" und "Wer räumt nachher auf? Der Aufrufer oder die Funktion?" also grob: "In welchen Zustand wird die CPU zurückgelassen nachdem die Funktion beendet ist?"

Da das Problem natürlich überall aufgetaucht ist, haben sich Konventionen gebildet (ja, Plural) und Pascal hatte eben eine andere als C. Die von pascal heißt register, die von C heißt stdcall.

Pascal kann auch Funktionen erzeugen die sich an die stdcall-Konvention halten, die müssen aber gekennzeichnet werden. Umgekehrt kann C keine Funktionen erzeugen oder aufrufen, die sich an die register-Konvention halten.

Ergo: Die interfaces ermöglichen zwar Plugins. Da du aber keine Konvention explizit geschrieben hast, nimmt der Delphi-Compiler register als Aufrufkonvention. Da er das tut, kannst du diese Funktionen wieder nur aus Pascalcode aufrufen. Die Plugins müssen also zwangsläufig in Pascal geschrieben sein!
  Mit Zitat antworten Zitat