Plugins erstellen unter linux

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Plugins erstellen unter linux

Beitrag von hanibal »

wie kann ich plug ins erstellen, und einbinden?

ich habe vor n prog zu schreiben, das "alles" kann.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

LooL

na dann bin ich gespannt wann ich ne pizza bekomm
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Plugins erstellen unter linux

Beitrag von Euklid »

hanibal hat geschrieben:wie kann ich plug ins erstellen, und einbinden?
Möglicherweise lässt sich das realisieren, indem du das Plugin als externes Programm ausführst...

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Normalerweise macht man sowas mit dll s. bzw Bibliotheken und lädt diese dynamisch aber "alles" wirst damit nie machen können da du immer definierte Schnittstellen brauchst. Gibt mindestens 10 Tuturials zu dem Thema im Nez ich schätze eher 50.

Google Suche nach Delphi und Plugins liefert als zweites Ergebnis z.b. einen beitrag mit dem näckischen Titel Delphi-PRAXiS :: Erstellen eines Delphi-PlugIns. Was sag uns das ? Richtig draufklicken und lesen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

hab das alles ja auch exktra in klammern geschrieben, soll nur so weit erweiterbar sein, das man da alle möglichen funktionen einfürgen kann.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Mit Formularen in Dlls wirst du allerdings zur Zeit bei Laz nicht glücklich werden, falls du darauf hoffst.

Diese Möglichkeit wird allerdings noch nicht wirklich unterstützt soweit ich weis. Also entweder die Oberfläche über die Dll und Parameterübergabe irgendwie umstellen oder gleich kleine externe Programme schreiben und über TProzess aufrufen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Ich kann mich erinnern gehört zu haben, dass es irgendein Problem gibt, in so-Dateien ("DLL"s in Linux) visuelle Komponenten zu benutzen. Soweit ich weiß, gibt es aber auch eine Lösung (siehe englisches Lazarus Forum).

-Michaeö

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

laut Bugtracker ist das Problem aber weiterhin offen, und die Lösung dürfte nicht einfach sein, somal, wenns noch für Windows und Linux laufen soll.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Formulare gehören ja auch ne in dlls :)
Da ists doch günstiger ein externes Programm zu nehmen und Interprocesskommunikation.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

wie funzt interprocess Kommunikationen?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Mit google und lesen und ohne Faulheit, wenn du spezielle Fragen hast beantworte ich sie gern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

ok, dann google ich da morgen mal nach, hab heute keine zeit mehr.

ich melde mich morgen noch mal

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Formulare gehören ja auch ne in dlls :)
Da ists doch günstiger ein externes Programm zu nehmen und Interprocesskommunikation.
Bei Plugins sing Formulare in DLLs aber das übliche.

Außerdem brauchen manche Plugins auch kein Multithreading/Multitasking. Dann würde ein weiterer Prozess die Komplexität unnötig erhöhen.

In Delphi geht das ganz einfach mit DLLs oder noch besser gemanaged mit Runtime-Packages.

Interprozess-Kommunikation ist sicherlich nicht verkehrt, aber für eine vernünftige Plug-in-Lösung müsste
- eine performante inter-Prozess-Kommunikation Plattform-unabhängig von Lazarus vorgegeben sein
- die inter-Prozess-Kommunikation leicht benutzbar sein
- eine Plattform-unabhängige Methodik vorgegeben sein, den Plugin-Prozess als Dämon (oder "user-Dienst") unsichtbar zu starten.

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Bei Plugins sing Formulare in DLLs aber das übliche.
Das ist ja quatsch üblich ist das gar nicht weil es in den meissten anderen Sprachen gar kein Rad gibt also auch keine Formulare da werden die fenster dann zu fuss in der dll erstellt und das geht natürlich auch in fpc. Ich habs der Sauberkeit halber mal so gemacht das die Plugins eine XML Beschreibung der Form samt Eventnamen an das Hauptprogramm schicken und das dann die Frm erstellt und die Events auf die DLL Funktionen umbiegt ist gar nicht mal so viel Aufwand und man braucht keine Spezialspielchen in den Plugins ausserdem ists zu jeder Programmiersprache kompetibel und nicht nur zu Lazarus oder Delphi wie das mit den Formularen ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Ich habs der Sauberkeit halber mal so gemacht das die Plugins eine XML Beschreibung der Form samt Eventnamen an das Hauptprogramm schicken und das dann die Frm erstellt und die Events auf die DLL Funktionen umbiegt
Hört sich interessant an.

Was meinst Du denn mit "Schicken" ?

Warum eine XML-Beschreibung ? Lazarus benutzt für die Beschreibung der Forms doch ein bestimmtes Ressource-Format. Da müsste man doch bei bleiben können um keinen neuen Interpreter schreiben zu müssen und den Lazarus Form-Designer zu verwenden.

"Im Prinzip" sollte es doch reichen, im Plugin (.dll bzw .so) eine Ressource zu haben, die das Form beschreibt und dann den Form-Create-Mechanismus, der im Hauptprogramm ohnehin eingebunden ist, mit einem passenden Pointer aufzurufen. Der sollte das Form dann kreieren. Mir ist nicht von vorne herein klar, wie die Event-Properties mit den dynamischen Adressen in der .dll/.so belegt werden, das sollte aber möglich sein.

-Michael
Zuletzt geändert von mschnell am Sa 31. Mär 2007, 11:59, insgesamt 1-mal geändert.

Antworten