Bonjour,
J'ai actuellement un problème que je n'arrive pas à résoudre : je dois intégrer une librairie statique d'extraction des métadonnées XMP pour l'utiliser en tant que module Mozilla (Firefox v.14) qui est une librairie dynamique (ss windows).
Je compile ma librairie XMP (v6 écrite en c++) en suivant leurs instructions (c-a-d intégration de la lib. expat 1.95 écrite en c). Tout se passe bien, j'obtiens bien mon fichier .lib.
Cependant, lorsque je compiles mon module XPCOM, j'ai droit à un paquet de fonctions externes non résolues :
En analysant ce que le compilateur microsoft m'a dit, j'ai apparemment l'objet ExpatAdapter.obj qui ne trouve pas certaines fonctions d'expat. Or, en regardant la table des symboles de ma lib xmpcore (objdump -t), je retrouve ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetCommentHandler référencé dans la fonction "public: __thiscall ExpatAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetProcessingInstructionHandler référencé dans la fonction "publi c: __thiscall ExpatAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetCdataSectionHandler référencé dans la fonction "public: __this call ExpatAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetCharacterDataHandler référencé dans la fonction "public: __thi scall ExpatAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetElementHandler référencé dans la fonction "public: __thiscall ExpatAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetNamespaceDeclHandler référencé dans la fonction "public: __thi scall ExpatAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_SetUserData référencé dans la fonction "public: __thiscall ExpatA dapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_ParserCreateNS référencé dans la fonction "public: __thiscall Exp atAdapter::ExpatAdapter(bool)" (??0ExpatAdapter@@QAE@_N@Z) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_ParserFree référencé dans la fonction "public: virtual __thiscall ExpatAdapter::~ExpatAdapter(void)" (??1ExpatAdapter@@UAE@XZ) xmpcore.lib(ExpatAdapter.obj) : error LNK2019: symbole externe non résolu __imp__XML_Parse référencé dans la fonction "public: virtual void __thiscall ExpatAdapter::ParseBuffer(void const *,unsigned int,bool)" (?ParseBuffer@ExpatAdapter@@UAEXPBXI_N@Z) xmp.dll : fatal error LNK1120: 10 externes non résolus
Je n'arrive pas à comprendre cette erreur d'éditions des liens : quelqu'un pourrait-il m'aiguiller ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ../third-party/expat/lib/xmlparse.obj: file format pe-i386 SYMBOL TABLE: ... [109](sec 5)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000ff0 _XML_SetCommentHandler ... ../XMPCore/source/ExpatAdapter.obj: file format pe-i386 SYMBOL TABLE: ... [251](sec 0)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __imp__XML_SetCommentHandler ...
Merci.
PS : à noter que je n'ai pas vu d'extern "C" dans xmlparse.c ni dans ExpatAdapter.cpp (mais Adobe n'en fait pas mention dans son readme).
Partager