Экспат неразрешенный внешний символ

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

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

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

При создании моего модуля xpcom, я получил это на этапе связывания:

symbole externe non 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)" (??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

Поэтому я подумал, что эти функции из expat отсутствуют в статической сборке моего 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
...

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

Спасибо !

0

Решение

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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]