2013-03-11 163 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。希望它可以帮助其他人也有同样的问题