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?
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
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
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.
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?
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).
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.
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 )
Envoyé par : ostralo
Date : 31/03/2006 10:52
Bon, après tests (sous Mandriva Linux 2006), j'en viens à la conclusion suivante :
...Quelqu'un peut-il me confirmer ce que je raconte ou je me plante?
Envoyé par : Paul Rouget
Date : 01/04/2006 03:37
Marrant, j'aurais, dit l'inverse. C'est quoi ce soucis de CID ?
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.