2013-03-11 121 views
0

當我在共享庫(它是一個Firefox xpcom組件)鏈接一個靜態庫(包含expat的XMP)時,我遇到了麻煩,爲什麼我得到了無法解析的外部符號。Expat無法解析的外部符號

我使用的是Windows編譯器在Windows下(標誌:「-Od -MDd」)和Mozilla Firefox的14

靜態庫是從Adobe XMP的SDK的XMPCore庫:有沒有問題,其建設(包括外籍人士的源代碼作爲第三方庫的一部分)

當建立我的XPCOM組件,我在鏈接階段得到這個:

symbole externe非解像度意味着解析的外部符號!


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

我發現我的錯誤:來自Adobe XMP的SDK的自述文件並未完成,因爲如果要使用expat(-DXML_STATIC)構建靜態庫,它們忘記告訴在編譯階段定義XML_STATIC。希望它可以幫助其他人也有同樣的問題