2013-03-11 8 views
0

У меня проблемы с поиском, почему у меня есть неразрешенный внешний символ при связывании статической библиотеки (XMP с включенным expat) в общей библиотеке lib (это компонент firefox xpcom).Expat неразрешенный внешний символ

Я под окнами, используя компилятор для Windows (флаг: "-od -MDd") и Mozilla-Firefox 14.

Статическая библиотека библиотека XMPCore из SDK Adobe XMP в: нет никаких проблем здания его (исходный код эмигранта, включены как часть библиотеки третьей стороны)

при создании моего XPCOM модуля, я получил это на связывающей стадии:

Symbole экстерн не résolu означает неразрешенный внешний символ!


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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected][email protected]) 
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)" ([email protected]@[email protected]) 
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)" ([email protected]@@[email protected]) 
xmp.dll : fatal error LNK1120: 10 externes non résolus 

Так я думал, что эти функции из эмигрант не хватало моей статической сборки XMP, чтобы я уже проверил с помощью objdump -t в список символов, я нашел это:



../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 
... 

реализация этих функций включена, поэтому мне нужны подсказки: может ли кто-нибудь помочь мне в этом?

Спасибо!

ответ

3

Я нашел свою ошибку: readme из SDK от Adobe XMP не был полным, потому что они забыли указать, чтобы определить XML_STATIC на этапе компиляции, если вы хотите построить статическую библиотеку с использованием expat (-DXML_STATIC). Надеюсь, это поможет другим людям с теми же проблемами.