用xulrunner-sdk-36.0 C++编译firefox扩展
Compilation of firefox extension with xulrunner-sdk-36.0 C++
我有一个适用于所有以前版本的 FF 工具栏。我的工具栏部分用 C++ 编写。我尝试使用新的 xulrunner-sdk-36.0 构建 C++ 部分
我收到了这样的 link 错误:
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,但出现相同的错误。
有人知道怎么解决吗?
_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
?)
所以您要么需要使用 v120 平台工具集(请参阅项目 Properties/General)在 VS2013 中编译您的项目,要么使用 VS2010 自己编译一个 xulrunner SDK。
从 Gecko 37 开始,您可能会 need to use VS2013 anyway:
Please note that as of Firefox 37, earlier versions of Visual Studio will not work. We've started using features of C++11 that are not supported in Visual Studio 2012 and earlier.
我有一个适用于所有以前版本的 FF 工具栏。我的工具栏部分用 C++ 编写。我尝试使用新的 xulrunner-sdk-36.0 构建 C++ 部分 我收到了这样的 link 错误:
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,但出现相同的错误。
有人知道怎么解决吗?
_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
?)
所以您要么需要使用 v120 平台工具集(请参阅项目 Properties/General)在 VS2013 中编译您的项目,要么使用 VS2010 自己编译一个 xulrunner SDK。
从 Gecko 37 开始,您可能会 need to use VS2013 anyway:
Please note that as of Firefox 37, earlier versions of Visual Studio will not work. We've started using features of C++11 that are not supported in Visual Studio 2012 and earlier.