Я использую последнюю версию Gecko SDK (xulrunner-34.0.5.en-US.win32.sdk) с MSVS 2013, и у меня возникают серьезные проблемы с компоновщиком (и, видимо, я не единственный).
После многих обходных путей для различных проблем я получаю следующие ошибки компоновщика:
Error 3 error LNK2001: unresolved external symbol "enum tag_nsresult __cdecl NS_TableDrivenQI(void *,struct nsID const &,void * *,struct QITableEntry const *)" (?NS_TableDrivenQI@@YA?AW4tag_nsresult@@PAXABUnsID@@PAPAXPBUQITableEntry@@@Z) C:\Users\user\Desktop\sample\sample\sample\nsSample.obj sample
Error 4 error LNK2001: unresolved external symbol "public: unsigned short const * __thiscall nsAString::BeginReading(void)const " (?BeginReading@nsAString@@QBEPBGXZ) C:\Users\user\Desktop\sample\sample\sample\nsSample.obj sample
Error 5 error LNK2001: unresolved external symbol "public: virtual enum tag_nsresult __thiscall mozilla::GenericModule::CanUnload(class nsIComponentManager *,bool *)" (?CanUnload@GenericModule@mozilla@@UAE?AW4tag_nsresult@@PAVnsIComponentManager@@PA_N@Z) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Error 6 error LNK2001: unresolved external symbol "public: virtual enum tag_nsresult __thiscall mozilla::GenericModule::UnregisterSelf(class nsIComponentManager *,class nsIFile *,char const *)" (?UnregisterSelf@GenericModule@mozilla@@UAE?AW4tag_nsresult@@PAVnsIComponentManager@@PAVnsIFile@@PBD@Z) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Error 7 error LNK2001: unresolved external symbol "public: virtual enum tag_nsresult __thiscall mozilla::GenericModule::RegisterSelf(class nsIComponentManager *,class nsIFile *,char const *,char const *)" (?RegisterSelf@GenericModule@mozilla@@UAE?AW4tag_nsresult@@PAVnsIComponentManager@@PAVnsIFile@@PBD2@Z) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Error 8 error LNK2001: unresolved external symbol "public: virtual enum tag_nsresult __thiscall mozilla::GenericModule::GetClassObject(class nsIComponentManager *,struct nsID const &,struct nsID const &,void * *)" (?GetClassObject@GenericModule@mozilla@@UAE?AW4tag_nsresult@@PAVnsIComponentManager@@ABUnsID@@1PAPAX@Z) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Error 9 error LNK2001: unresolved external symbol "public: virtual unsigned int __thiscall mozilla::GenericModule::Release(void)" (?Release@GenericModule@mozilla@@UAEIXZ) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Error 10 error LNK2001: unresolved external symbol "public: virtual unsigned int __thiscall mozilla::GenericModule::AddRef(void)" (?AddRef@GenericModule@mozilla@@UAEIXZ) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Error 11 error LNK2001: unresolved external symbol "public: virtual enum tag_nsresult __thiscall mozilla::GenericModule::QueryInterface(struct nsID const &,void * *)" (?QueryInterface@GenericModule@mozilla@@UAE?AW4tag_nsresult@@ABUnsID@@PAPAX@Z) C:\Users\user\Desktop\sample\sample\sample\nsSampleModule.obj sample
Я добавил ВСЕ файлы LIB из SDK и до сих пор ничего.
Я нашел похожие проблемы от других разработчиков, но не нашел решения:
http://forums.mozillazine.org/viewtopic.php?f=19&т = 2288909
https://bugzilla.mozilla.org/show_bug.cgi?id=682259
Последняя ссылка должна предоставить решение, но оно не работает для меня (и для другого пользователя на этой странице).
Кто-нибудь есть какие-либо советы / решения / предложения по этому вопросу?
ОБНОВИТЬ:
После определения XP_WIN
Я получаю только одну ошибку компоновщика:
LNK2001: unresolved external symbol "public: unsigned short const * __thiscall nsAString::BeginReading(void)const " (?BeginReading@nsAString@@QBEPBGXZ) C:\Users\user\Desktop\sample\sample\sample\nsSample.obj sample
Это, кажется, приводит меня в то же место, что и этот парень:
https://bugzilla.mozilla.org/show_bug.cgi?id=682259#c7
UPDATE2:
Это было связано с предыдущей проблемой, с которой у меня были конфликтующие typedefs для char16_t
внутри Мозиллы Char16.h
и MS yvals.h
:
typedef wchar_t char16_t;
vs
typedef unsigned short char16_t;
Моим новым решением было определить _CHAR16T
предотвратить ввод заголовков MS char16_t
,
ХОРОШО. Проблемы были:
XP_WIN
,_CHAR16T
для предотвращения заголовков MS typedef-ы char16_t.Это те библиотеки, от которых у меня есть зависимости на данный момент:
crmf.lib
nss3.lib
unicharutil_external_s.lib
mozjs.lib
xpcomglue.lib
xpcomglue_staticruntime.lib
xpcomglue_staticruntime_s.lib
xpcomglue_s.lib
mozglue.lib
mozalloc.lib