2015-02-23 72 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功能。