Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2

# xpcom (sous linux) avec gecko-sdk :

Envoyé par : ostralo

Date : 22/03/2006 15:59

Bonjour,

j'ai fais ce tutorial : http://www.iosart.com/firefox/xpcom/ qui permet de créer un xpcom à partir gecko-sdk. Quand je lance l'exemple, j'ai ce message d'erreur :

"Type error: Components.classes[cid] has no properties!"

les fichiers .xpt et .so sont copiés dans /usr/lib/mozilla-firefox/components

une idée?

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : Paul Rouget

Date : 23/03/2006 02:26

J'ai écrit cette petite page pour le debug de chargement de composant: http://xulfr.org/wiki/DebugXPCom

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : ostralo

Date : 24/03/2006 08:41

j'ai suivi la page débug (http://xulfr.org/wiki/DebugXPCom)

quand je lance firefox:

./mozilla-firefox j'obtiens :

Composant chargé
Composant chargé
AiOGest: init
AiOGest: end init

à priori .so est chargé

(Note : j'utilise firefox 1.5.0.1 et sdk compilé via les sources mozilla)

par contre, quand je lance le .js (sous firefox), j'ai toujours :

Type error: Components.classes[cid] has no properties!

ldd /home/ostralo/Projets/firefox/components/MyComponent.so

donne :

       linux-gate.so.1 =>  (0xffffe000)
       libnspr4.so => /usr/lib/libnspr4.so (0xb7f6f000)
       libplds4.so => /usr/lib/libplds4.so (0xb7f6b000)
       libplc4.so => /usr/lib/libplc4.so (0xb7f66000)
       libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e80000)
       libm.so.6 => /lib/tls/libm.so.6 (0xb7e5b000)
       libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e50000)
       libc.so.6 => /lib/tls/libc.so.6 (0xb7d21000)
       libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7d0f000)
       libdl.so.2 => /lib/libdl.so.2 (0xb7d0b000)
       /lib/ld-linux.so.2 (0x80000000)

nm -g /home/ostralo/Projets/firefox/components/MyComponent.so

donne :

nm: /home/ostralo/Projets/firefox/components/MyComponent.so: no >symbols

LD_PRELOAD=/home/ostralo/Projets/firefox/components/MyComponent.so ls

donne :

ls: symbol lookup error: >/home/ostralo/Projets/firefox/components/MyComponent.so: >undefined >symbol: _Z20NS_NewGenericModule2PK12nsModuleInfoPP9nsIModule

là, il ya un problème, mais j'avoue que je ne comprends pas trop ce qui cloche...help!

Note 2 :

mes fichiers .so et .xpt sont placés dans /usr/lib/mozilla-firefox/components

je lance ./regxpcom -x /usr/lib/mozilla-firefox/components depuis ~/mozilla/dist/sdk/bin

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : laurentj

Date : 24/03/2006 11:09

Vu la dernière erreur, j'ai bien l'impression que tu as oublié de coder la fonction qui permet de déclarer ton composant...

as tu développé un fichier avec ce genre de chose ?

NS_GENERIC_FACTORY_CONSTRUCTOR(...)
NS_DECL_CLASSINFO(...)
static const nsModuleComponentInfo components[ ] = {... }

Et surtout :

 
 NS_IMPL_NSGETMODULE(monModule, components)

à propos de regxpcom : tu n'as en principe pas à l'utiliser.

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : ostralo

Date : 24/03/2006 12:00

voilà mon MyComponentModule.cpp :

#include "nsIGenericFactory.h"
#include "MyComponent.h"
#include <nspr.h>

static NS_METHOD nsFoobarRegistrationProc(nsIComponentManager >*aCompMgr,
nsIFile *aPath,
const char >*registryLocation,
const char *componentType,
const nsModuleComponentInfo >*info)
{
PR_fprintf(PR_STDOUT, "Composant chargé\n");
return NS_OK;
}

NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent)

static const nsModuleComponentInfo components =
{
{ NSFOOBAR_CLASSNAME,
NSFOOBAR_CID,
NSFOOBAR_CONTRACTID,
nsMyComponentConstructor,
nsMyComponentRegistrationProc
}
};

NS_IMPL_NSGETMODULE("MyComponentsModule", components)

...il n'apparait effectivement pas :

NS_DECL_CLASSINFO(...) > quels sont les arguments?

...mais c'est issu d'un exemple de création de xpcom (http://www.iosart.com/firefox/xpcom/) qui fonctionne sous windows, mais pas sur ma machine Linux... bizarre, non?

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : laurentj

Date : 24/03/2006 13:46

Je pense que tu as fait une erreur dans ton exemple (que tu ne dois pas avoir je pense en réalité, sinon le compilateur aurait raler) :

NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent)

C'est nsMyComponent, et non pas MyComponent, conformément à ce que tu as décris dans ta structure nsModuleComponentInfo.

À noter que la fonction "RegistrationProc" n'est pas indispensable si tu n'a rien à faire lors du chargement.

Sinon, pour le NS_DECL_CLASSINFO :

NS_DECL_CLASSINFO(taclasse)

donc ici

NS_DECL_CLASSINFO(nsMyComponent)

mais c'est issu d'un exemple de création de xpcom (http://www.iosart.com/firefox/xpcom/)

Euh, dans cet exemple, il dit de récupérer le sdk de Mozilla 1.7. Or Firefox 1.5 , c'est mozilla 1.8. Tes problèmes pourraient venir d'incompatibilité...

Cependant, et comme le recommande Mozilla , il n'y a pas de sdk officiel pour Firefox 1.5. Le sdk, comme je l'ai souvent répété dans ce forum (et comme il est marqué dans le wiki, n'est fait que pour ceux qui veulent embarquer gecko dans des applications tierces. Pas pour ceux qui veulent réaliser des composants pour Firefox.

Il faut donc que tu télécharge les sources de Firefox 1.5, que tu le compiles. Tu aura alors tout les .h et les .idl qu'il te faut, tu aura même un sdk (pas top puisque lui ne contient pas tous les .h et .idl, donc tu ne pourras pas appeler tout les composants de firefox).

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : ostralo

Date : 24/03/2006 14:15

Euh, dans cet exemple, il dit de récupérer le sdk de Mozilla 1.7. Or >Firefox 1.5 , >c'est mozilla 1.8

j'utilise les sources de mozilla BRANCH_1_8 (compilé) et c'est de la que je récupère les sdk donc je pense que ça doit fonctionner,non?

qui veulent embarquer gecko dans des applications tierces

...c'est ce que je veux faire ultérieurement, justement.

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : laurentj

Date : 24/03/2006 15:47

j'utilise les sources de mozilla BRANCH_1_8 (compilé) et c'est de la que je récupère les sdk donc je pense que ça doit fonctionner,non?

Donc dans ce cas oui il ne devrait pas y avoir de problème. (en théorie :-) )

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : ostralo

Date : 31/03/2006 10:52

Bon, après tests (sous Mandriva Linux 2006), j'en viens à la conclusion suivante :

  • Firefox-1.0.x + gecko-sdk 1.7 = ça marche nickel -)
  • Firefox-1.5.1 + gecko-sdk 1.8 = ça marche pas -( > pb de [cid]

...Quelqu'un peut-il me confirmer ce que je raconte ou je me plante?

# Re: xpcom (sous linux) avec gecko-sdk :

Envoyé par : Paul Rouget

Date : 01/04/2006 03:37

Marrant, j'aurais, dit l'inverse. C'est quoi ce soucis de CID ?

Aller à la page :  1 2

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.