Plugins
Übersicht

![]() |
LunatixBetreff: Plugins |
![]() Antworten mit Zitat ![]() |
---|---|---|
Heiho
Ich würd mal gern wissen, ob man auch plugins für ein Bmx hauptprogramm machen kann, und wie sowas funktioniert... |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Natürlich kannst du das.
Dazu musst du nur in deinem Programm eine Architektur einfügen, die in der Lage ist, Plugins als solche zu erkennen und diese auch auszuführen. (häufig .dll). Das Ausführen verlangt dann natürlich, dass die DLL (oder das Plugin) bestimmte Funktionen besitzt und auch exportiert, so das dein Programm darauf zugreifen kann, wie PluginGetType(), PluginInit(), PluginRun() oder was auch immer deine Plugins genau können sollten. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also sagen wir, ich schreibe... zum bleistift ein chat-client programm. Müsste ich diesem eine eigene Skriptsprache hinzufügen? Oder wie soll das mit den DLL's gehen ? | ||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nun, ScriptSprachen wären natürlich ein zweiter, ganz anderer Ansatz für Plugins.
Wenn du mit DLLs für plugins arbeitest, dann müssen Leute die Plugins machen wollen, Programmiersprachen benutzen, die DLLs erzeugen können (BM, C etc). Diese DLLs müssten dann die Funktionen aufweisen, die ein Plugin gemäss deinen Spezifikationen benötigt, um ausgeführt werden zu können. Welche das sind, hängt von deinem Plugin System ab, also was ein Plugin überhaupt können / dürfen soll. Alternativ könntest du natürlich auch Plugins / Addons via Scriptsprachen machen. Da man sich via SyncMod zum AXE ein vollfunktionsfähiges LUA Modul in BM einbinden kann, wäre das für diesen Ansatz wahrscheinlich zu priorisieren, da LUA weitverbreitet ist und es dafür viele tutorials etc gibt. Auch da müssten die Addons natürlich wieder bestimmte Funktionen besitzen (bzw. hier könnten es auch direkt Variablen / Tables sein für bestimmte Dinge) die dein Programm dann bei der Ausführung des Plugins aufrufen würde. Denn dein Programm weiss von einem Plugin nicht mehr, als die funktionen die du bestimmst, die vorhanden sein müssen. Nehmen wir zb Plugins für import und export. Dann hättest du vermutlich die folgenden funktionen: GetType:Int() ; Return sagt ob das Plugin Import, Export oder beides ist Export(data:Byte Ptr,size:int) ; Falls das plugin ein export plugin ist, bekommt es alle daten als memory block -> TBank Import(data:Byte Ptr var, size:int var) ; falls das plugin in import plugin ist, wird von diesem ein memory block befüllt und zwar mit dem datenformat das von dir vorgegeben wurde. Das ist nur ein exemplarischer Ansatz. Das Netz bietet dir da vollständigere Umsetzungsvorschläge, wo auch noch auf andere Punkte eingegangen wird. Aber prinzipiell ist es so, das dein Programm nicht weiss / wissen will, was im Plugin drin ist oder was vorgeht. Es gibt ihm Daten und / oder erfragt von ihm Daten. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group