与 XulRunner v.34 链接,为 Firefox 创建一个 XPCOM 扩展

Linking with XulRunner v.34 to create an XPCOM extension for Firefox

本文关键字:一个 扩展 XPCOM 创建 Firefox XulRunner 链接      更新时间:2023-10-16

我正在使用最新的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:UsersuserDesktopsamplesamplesamplensSample.obj sample
            Error   4   error LNK2001: unresolved external symbol "public: unsigned short const * __thiscall nsAString::BeginReading(void)const " (?BeginReading@nsAString@@QBEPBGXZ)   C:UsersuserDesktopsamplesamplesamplensSample.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:UsersuserDesktopsamplesamplesamplensSampleModule.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:UsersuserDesktopsamplesamplesamplensSampleModule.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:UsersuserDesktopsamplesamplesamplensSampleModule.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:UsersuserDesktopsamplesamplesamplensSampleModule.obj   sample
            Error   9   error LNK2001: unresolved external symbol "public: virtual unsigned int __thiscall mozilla::GenericModule::Release(void)" (?Release@GenericModule@mozilla@@UAEIXZ)  C:UsersuserDesktopsamplesamplesamplensSampleModule.obj   sample
            Error   10  error LNK2001: unresolved external symbol "public: virtual unsigned int __thiscall mozilla::GenericModule::AddRef(void)" (?AddRef@GenericModule@mozilla@@UAEIXZ)    C:UsersuserDesktopsamplesamplesamplensSampleModule.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:UsersuserDesktopsamplesamplesamplensSampleModule.obj   sample

我已经从SDK添加了所有LIB文件,但仍然没有任何内容。我从其他开发人员那里发现了类似的问题,但没有解决方案:

http://forums.mozillazine.org/viewtopic.php?f=19&t=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:UsersuserDesktopsamplesamplesamplensSample.obj sample

这似乎让我和这个家伙处于同一个地方:

https://bugzilla.mozilla.org/show_bug.cgi?id=682259#c7

UPDATE2:

这与我之前遇到的一个问题有关,即 Mozilla 的 Char16.h 和 MS yvals.hchar16_t的 typedefs 冲突:

typedef wchar_t char16_t;
vs
typedef unsigned short char16_t;

我的新解决方案是定义_CHAR16T以防止MS标头类型定义char16_t

好的。问题是:

  1. 我必须定义XP_WIN.
  2. 我必须定义_CHAR16T以防止 MS 标头类型定义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
相关文章: