Jump to content
mague

Lazarus + FPC

Recommended Posts

mague

Hallo,

 

wieweit komme ich mit Lazarus + Free Pascal beim Entwickeln von plugin's ?

 

http://de.wikipedia.org/wiki/Lazarus_(Entwicklungsumgebung)

 

Ich werde es die Tage mal installieren und schauen ob ich myprograms.dll damit gebaut bekomme.

Wenn mir ein Entwickler aber jetzt gleich sagt, dass das nix wird, dann kann ich mir den Aufwand sparen o:)

 

Wenn es tut, was brauche ich ? Gibt es DVBV spezifische header/libs/whatever ?

 

Danke fuer die Antwort ;)

Share this post


Link to post
Lars_MQ

Das sollte problemlos funktionieren. Die beispiel plugins aus dem Sourcebereich der Membersarea sollten sich ohne grosse änderungen direkt kompilieren lassen und sind ein guter Ansatzpunkt.

Share this post


Link to post
mague

Hi,

 

in den sourcen von myprograms.dll steht im DVBViewerServer_TLB:

 

uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants;

 

Im Moment bricht er schon bei Graphics ab. Sind die oeffentlich erhaeltlich ?

 

Die sourcen aus members schaue ich heute Abend mal durch.

Share this post


Link to post
mague

Das Ganze ist ziemlich spassfrei ;)

 

dvbv_tvg laesst sich relativ schnell konvertieren und auch erfolgreich kompilieren. Danach muss man im Prinzip bei scratch anfangen. Lazarus versteht sich nicht als Delphi clone und macht was es fuer gut und richtig haelt. VCL nach LCL laesst sich noch bewerkstelligen, danach wirds anstrengend. Hab aufgegeben bei einigen "... idents no member", welche meinem Verstaendniss nach einfach nur Fehlinterpretationen des parsers sind.

 

Mal sehen ob ich mir das antun will und bei Nil anfange. Viel will ich eigentlich nicht, nur in ein bestimmtes Menue einklinken und ein eigenes xml darstellen.

Share this post


Link to post
SnoopyDog

Das Thema ist zwar schon alt, aber ich habe interessenhalber auch einmal Lazarus 1.2.4 installiert und geschaut, was man damit so alles anstellen kann...

 

Natürlich habe ich auch versucht, meine DVBViewer-Plugins zu compilieren. Nach einigem hin und her war das auch erledigt und ein kleines Input-Plugin für die MCE-2005-Fernbedienung funktioniert sogar!

Ganz anders bei den Plugins, die die COM-Schnittstelle verwenden. Bei der bereits von Delphi vorhandenen DVBViewerServer_TLB.pas war es so, daß ich zwar DVBViewer-Funktionen aufrufen kann, jedoch kam kein einziges Event im Plugin an. Nach kurzer Suche habe ich herausgefunden, daß unter Delphi die ganzen Event-Klassen von "TOleServer" abgeleitet sind. Diese Klasse gibt es zwar auch unter Lazarus, jedoch ist sie nur eine leere Hülle ohne Implementierung. Also habe ich mit Lazarus die DVBViewer-Schnittstelle importiert und siehe da: plötzlich sind alle Event-Klassen von "TEventSink" abgeleitet! Compilieren konnte ich allerdings nun wieder nicht, denn es gab kein "ConnectTo" mehr. Da Lazarus jedoch im "Create" der Event-Callbacks einen automatischen Connect eingebaut hatte, habe ich erst einmal alle "ConnectTo"-Aufrufe bei mir eingeklammert. Compilieren ließ es sich nun wieder, aber es kamen noch immer keine Events rein! Also die von Lazarus erdachten automatischen "Connect"-Aufrufe im "Create" entfernt, das von Delphi bekannte "ConnectTo" zu den Klassen addiert, es bei mir wieder ausgeklammert, compiliert und.... jetzt funktioniert es. Zumindest dieser Teil der Schnittstelle.

Ganz anders die zweite, mindestens genauso wichtige OSD-Schnittstelle. Bei dieser bekomme ich es um's Verrecken nicht hin, daß da überhaupt irgendetwas funktioniert. Wer sich damit auskennt: die besteht aus mehrfach-vererbten Klassen - ein Mix aus COM und Delphi-Klassen. Um den DVBViewer damit ansprechen zu können, inistanziert man eine selbst abgeleitete Klasse von einer der Plugin-Rümpfe und übergibt diese in der DLL-Prodedure InitPlugin2 an den DVBViewer. Dieser ruft dann diese Instanz auf. Und irgendetwas scheint hier komplett anders als bei Delphi zu sein. Der Debugger von Lazarus taugt leider auch nicht, man kann nicht vernünftig Schritt für Schritt debuggen und sehen, was passiert.

 

Wer interesse an der DVBViewerServer_TLB.pas für Lazarus hat: ich habe diese mal hier angehängt.

 

Bei dem Rest komme ich derzeit nicht weiter.

 

Übrigens: meine SkinHelperMR.dll ist von Delphi compiliert ~800 kB groß. Als ich sie zum ersten Mal mit Lazarus compilierte, kam hinten ein 17 MB großes Ungetüm heraus. Das lag daran, daß ich das Debugging aktiviert hatte, welches jede Menge Symbole in die DLL zu packen scheint. Aber auch mit ausgeschaltetem Debugging und höchster Optimierungsstufe habe ich noch immer eine DLL, welche ~ 2 MB anstelle von 800 KB groß ist.

DVBViewerServer_TLB.zip

Edited by SnoopyDog

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...