custus.de
E-Mail
Abonnieren
Empfehlen
Verfolgen

Mozilla XPCOM Schnittstelle und C++

26.08.2008 custus Kategorie: Webdesign Kommentare (0)

Wer sich mit Java-Script auskennt und sich auch schon einmal mit der Erstellung von Firefox Extensions versucht hat, der hat mein Mitleid.

Ich habe seit gut 10 Jahren nicht mehr in C++ gearbeitet und obwohl ich mit Java-Script und den XUL Vorgaben von Mozilla einigermaßen klar kam, so ist doch die XPCOM Schnittstelle bzw. das “nsISupport” Interface nichts für Einsteiger.
Mein Ziel war es eine DLL zu erstellen, um wichtige Code-Bereiche nicht in Java-Script abhandeln zu müssen. Es gibt diverse Extensions die das bereits erfolgreich gemacht hatten, also mit DLLs gearbeitet haben.
Das heißt nun aber nicht, dass ich mit meinem gebrochenen C++ das auch hinkriegen würde. Zunächst ist die Schnittstelle in bezug auf Zugriffe mit Datentyen sehr streng, bzw. sehr abstrakt.


Die Anleitungen hierzu von Mozilla selbst, lassen manchmal sehr zu wünschen übrig, denn es kostete mich allein schon 3 Tage, um mit meinem Compiler die DLL überhaupt erst ohne Fehler erstellen zu lassen.

Schließlich fand ich eine Kombination auf einem Blog, die mit entgegen kam und siehe da es klappte auch. Trotzdem verbrachte ich noch weitere Tage damit meine geünschten Funktionalitäten in diese DLL mit einzubinden. Einige verbreitete Standardbibliotheken (z.B. Boost) lassen sich nicht ohne weiteres einbinden. Somit ist also vieles bei mir selbst liegen geblieben.
XML, Dateizugriff, reguläre Ausdrücke all dies ist nicht mehr so einfach zu realisieren, wenn man nur die MFC benutzen möchte.

Die Anleitung zum Einrichten meiner Compiler-Umgebung mit Visual C++ 2003 habe ich hier gefunden:
http://starkravingfinkle.org/blog/2006/10/mozilla-platform-xpcom-in-c/

Hier fand ich hinweise, welche Gecko-SDK benötigt wird:
http://developer.mozilla.org/en/Windows_Build_Prerequisites#Microsoft_Visual_C.2B.2B_.28MSVC.29

Nochmal ein Einrichtungshinweis:
http://developer.mozilla.org/en/How_to_build_a_binary_XPCOM_component_using_Visual_Studio

Trotzdem habe ich lange gebraucht, um micht in so eine komplexe Schnittstelle einzufinden, insbesonders weil der Austausch zwischen JS und der DLL nicht mit Standard string oder integer funktioniert. Welche Datentypen, wie verwendet werden dürfen sind beschrieben unter: http://www.mozilla.org/projects/xpcom/
Da es keine direkten Konvertierungsmethoden gibt ist es eine leicht knifflige Angelegenheit die richten Ansätze zu finden, um seine gewünschten Funktionen und Methoden einzubinden und mit JS auch eine entsprechende Kommunikation aufzubauen.

Kommentare

Kommentarfunktion ist deaktiviert.