与 XulRunner v.34 链接,为 Firefox 创建一个 XPCOM 扩展
Linking with XulRunner v.34 to create an XPCOM extension for Firefox
我正在使用最新的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.h
中char16_t
的 typedefs 冲突:
typedef wchar_t char16_t;
vs
typedef unsigned short char16_t;
我的新解决方案是定义_CHAR16T
以防止MS标头类型定义char16_t
。
好的。问题是:
- 我必须定义
XP_WIN
. - 我必须定义
_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
相关文章:
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- 如何构建一个 setup.py 来编译C++使用 Python、pybind11 和 Mingw-w64 的扩展?
- 为什么 MSVC C++编译器将一个简单的 Hello World 扩展为 4000 行汇编?
- 在另一个字符串中插入文件扩展名之前的字符串
- 如何将一个 QQuickItem 扩展作为子扩展添加到另一个 QQuickItem 扩展?
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- RXCPP:创建一个不关心可观察量输入类型的扩展
- 是否可以在不扩展初始宏的情况下将一个宏作为参数提供给另一个宏?
- 用一个额外的元素扩展 std::array 的每个 std::元组
- 如何使用直接IO编写一个带有扩展文件大小的小文件
- 如何将矢量大小扩展一个元素并用变量填充它
- 设计一个扩展良好的多线程应用程序
- 通过在上一个数组结束后立即存储下一个元素来扩展数组
- 为什么我不能在 c++ 类中声明一个空构造函数,该构造函数从一个具有私有构造函数的构造函数扩展而来
- Qt多个文件过滤器,强制一个扩展名
- GLEW只是一个扩展库,或者它也包含OpenGL ES 2.0实现
- 可变长度数组也是Clang中的一个扩展吗
- 如何为Internet Explorer创建一个扩展作为Exe-Com服务器
- 写入一个扩展名不同但名称与所读文件相同的文件