Compilation d'un composant sous Visual C++ 6.0 (Windows)

A l'aide du SDK Gecko

Le SDK Gecko est facile à mettre en place, mais malheureusement incomplet. Il ne permet pas d'accèder en profondeur à tous les composants XUL, car seuls les fichiers d'entête des composants frozen (dont l'interface est considèrée comme stable) sont fournis (genre nsIDOMHTMLInputElement.h et nsIDOMHTMLTextArea.h pour les textbox). Il n'est, par exemple, pas possible de récupérer, en C++, avec le SDK Gecko, l'item sélectionné dans un lisbox.

Récupération du SDK Gecko

Le but étant de créer, au final, une application standalone, c'est-à-dire indépendante d'un navigateur quelconque, que ce soit Mozilla ou Firefox, il me fallait un SDK qui soit compatible avec un navigateur Mozilla, pour le développement, et une des dernières versions de xulrunner, pour le déploiement. C'est pour cela que j'ai sélectionné, en date du 13/01/2006, le navigateur Mozilla et le SDK correspondant se situant à l'adresse :

ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/

le chemin complet correspondant au SDK pour Windows étant :

ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/gecko-sdk-i586-pc-msvc-1.8b1.zip

Ce SDK semble compatible avec la version de xulrunner situé à l'adresse :

ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.1/win32/en-US/

Installation du SDK Gecko

Cela consiste simplement à dezipper le fichier en un endroit quelconque de votre disque dur. Néanmoins, lorsque l'on tente de lancer xpidl.exe, il réclame le fichier libIDL-0.6.dll, que j'ai trouvée à l'adresse :

http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/

vous y trouverez également le fichier glib-1.2.dll, qui est également nécessaire au bon fonctionnement de xpidl. Les deux fichiers doivent être dézippés dans le répertoire bin.

Tous les exécutables du répertoire bin se lancent maintenant, sauf regxpcom.exe, qui réclame plusieurs DLL, que vous trouverez à la racine de l'installation du navigateur Firefox our Mozilla. Placez les fichiers réclamés également dans le répertoire bin.

Mise en place d'un projet sous VC++

Création d'un projet VC++

  • Lancez VC++ :-),
  • Menu 'File/New …',
  • Onglet 'Projects',
  • Item 'Win32 Dynamic-Link Library',
  • Remplissez les champs 'Project name' et 'Location' à votre convenance,
  • Bouton 'OK',
  • Item 'An empty DLL project' (devrait être sélectionné par défaut),
  • Bouton 'Finish'.

Configuration du projet VC++

Options :

  • Menu 'Project/Settings …',
  • Sélectionnez 'All configurations' dans le menu déroulant 'Settings For:',
  • Onglet 'C/C++',
  • Sélectionnez 'Preprocessor' dans le menu déroulant 'Category:'.
  • Ajoutez 'XPCOM_GLUE' et 'MOZILLA_STRICT_API' dans le champ 'Preprocessor definitions:' (séparés par des virgules),
  • Ajoutez 'gecko-sdk\include' dans le champ 'Additional include directories:',
  • Dans différentes documentations, il est conseillé de désactiver la gestion des interruptions. Personnellement, comme je compte les intercepter avant qu'ils ne remontent l'interface XPConnect, je les laisse activées.
  • Sélectionnez 'Code Generation' dans le menu déroulant 'Category:'.
  • Sélectionnez 'Win32 Debug' dans le menu déroulant 'Settings For:',
  • Sélectionnez 'Debug Multithreaded DLL' dans le menu déroulant 'Use run-time Library',
  • Sélectionnez 'Win32 Release' dans le menu déroulant 'Settings For:',
  • Sélectionnez 'Multithreaded DLL' dans le menu déroulant 'Use run-time Library',
  • Bouton 'OK'.

Bibliothèques :

  • Menu 'Project/Add to Project/Files …',
  • Allez dans le répertoire 'lib' situé à la racine du SDK Gecko,
  • Sélectionnez 'nspr4.lib', 'plc4.lib', 'plds4.lib', 'xpcom.lib' et 'xpcomglue_s.lib'.
  • Bouton 'OK'.

Interface

Pour compiler le composant, vous aurez besoin d'un fichier d'entête C++ génèré par l'utilitaire xpidl. En outre, pour que Gecko puisse utiliser votre composant, il a besoin d'un fichier suffixé .xpt. Ces deux fichiers sont génèrés à partir d'un fichier suffixé .idl. VC++ peut se charger de génèrer ces deux fichiers. Pour ce faire, incluez votre fichier .idl dans votre projet C++, comme n'importe qu'elle autre source, puis changez ses propriétés (click gauche sur le fichier en question, puis 'Settings…”).

  • Sélectionnez 'All configurations' dans le menu déroulant 'Settings For:',
  • Onglet 'General' (devrait être sélectionné par défaut),
  • Cochez 'Always use custom build step' (cela fait apparaître l'onglet ci-dessous),
  • Onglet 'Custom build'
  • Placez les lignes suivantes dans le champ 'Commands' ('gecko-sdk' désignant le répertoire dans lequel vous avez installé le SDK Gecko),
gecko-sdk\bin\xpidl -m header -Igecko-sdk\idl $(InputName).idl  
gecko-sdk\bin\xpidl -m typelib -Igecko-sdk\idl $(InputName).idl
  • Placez les lignes suivantes dans le champ 'Outputs',
$(InputName).h
$(InputName).xpt
  • Bouton 'OK'.

Vous avez maintenant un projet génèrant tous les fichiers nécessaires à partir de vos sources.

Liens

 
other/gecko/xpcom/compiling.txt · Dernière modification: 2006/08/03 11:30 par 192.168.5.45
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki