2015-02-23 93 views
2

我有一个在所有以前版本中工作的FF工具栏。我的工具栏部分用C++编写。我试着用新的XULRunner-SDK-36.0 我已经收到这样的链接错误打造的C++部分:用xulrunner-sdk-36.0编译firefox扩展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。

有人知道如何解决这个问题吗?

回答

4

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

1800对我说,xulrunner SDK是使用VS2013,which is confirmed by the docs构建的,而你的项目仍然使用VS2010。 (我想,当你尝试过VS2012,它抱怨17001600?)

所以,你要么需要编译VS2013项目使用V120平台工具集(参见项目属性/常规),或编译的XULRunner SDK自己使用VS2010。

与壁虎37开始,你可能会need to use VS2013 anyway

请注意,由于火狐37的早期版本的Visual Studio将无法正常工作。我们已经开始使用Visual Studio 2012及更早版本不支持的C++ 11功能。