【问题标题】:Compilation of firefox extension with xulrunner-sdk-36.0 C++使用 xulrunner-sdk-36.0 C++ 编译 firefox 扩展
【发布时间】:2015-02-23 14:38:46
【问题描述】:

我有一个 FF 工具栏可以在所有以前的版本中使用。我的工具栏部分用 C++ 编写。我尝试使用新的 xulrunner-sdk-36.0 构建 C++ 部分 我收到了这样的链接错误:

1>xpcomglue_s.lib(nsISupportsImpl.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1800' doesn't match value '1600' in Encryption.obj
1>xpcomglue_s.lib(nsStringAPI.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1800' doesn't match value '1600' in Encryption.obj
1>xpcomglue_s.lib(nsComponentManagerUtils.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1800' doesn't match value '1600' in Encryption.obj
1>xpcomglue_s.lib(nsCOMPtr.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1800' doesn't match value '1600' in Encryption.obj
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1800' doesn't match value '1600' in Encryption.obj
1>xpcomglue_s.lib(nsTArray.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1800' doesn't match value '1600' in Encryption.obj

从我的第一次研究中,我了解到 VS 版本不兼容的问题。我尝试重新编译 VS2010 和 VS2012 时出现相同的错误。

有人知道怎么解决吗?

【问题讨论】:

    标签: firefox-addon firefox-addon-sdk xpcom


    【解决方案1】:

    _MSC_VER 1800 是 Visual Studio 2013,1600 是 Visual Studio 2010。两种编译器在 C++ 模式下相互不兼容,因此您需要重新编译您的项目或 SDK,以便编译器匹配。

    1800 告诉我 xulrunner SDK 是使用 VS2013 构建的,which is confirmed by the docs,而您的项目仍然使用 VS2010。 (我猜当你尝试 VS2012 时,它抱怨的是 1700 而不是 1600?)

    因此,您要么需要在 VS2013 中使用 v120 平台工具集(请参阅项目属性/常规)编译您的项目,要么使用 VS2010 自己编译 xulrunner SDK。

    从 Gecko 37 开始,您可能会need to use VS2013 anyway

    请注意,从 Firefox 37 开始,早期版本的 Visual Studio 将无法使用。我们已开始使用 Visual Studio 2012 及更早版本不支持的 C++11 功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多