编译Firefox插件在Visual Studio 2012

问题描述:

Possible Duplicate:
Compiling a MFC app from Visual Studio 2010 to 2012 RC results in LNK2038编译Firefox插件在Visual Studio 2012

我正在从Visual Studio 2010中到Visual Studio 2012年当我打开了项目的XPCOM Firefox插件项目时,Visual Studio问我是否要在项目使用最新的C++编译器。如果我说没有,然后我得到这个编译错误:

Error 1 error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install Visual Studio 2010 to build using the Visual Studio 2010 build tools. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets 42 5 FF (Visual Studio 2010)

如果我说是的话,我得到的这五个编译错误的xpcomglue_s_nomozalloc.lib在xulrunner的-SDK \ lib目录:

error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700'

我无法安装Visual Studio 2010.我想我可以使用Visual Studio 2012自己编译Gecko,虽然这看起来像很多工作,我不确定它会工作。因此,请让我知道在Visual Studio 2012中编译我的Firefox附加组件的最佳方式。

+0

我已经看到这个帖子,这个问题不是重复的。在这种情况下,所讨论的库特别是XPCOM/Firefox的库。 – HappyNomad

+0

“您需要重新编译所有的.libs或运行时链接与DLL”。该解决方案应适用。 –

+0

它应该适用,这就是为什么我在我的问题中提到它的原因,但是:(1)最终结果是否仍然适用于Firefox? (2)是否有更好的解决方案,例如那里已经编译了一个二进制文件? – HappyNomad

当您编译二进制XPCOM组件时,您必须使用与编译Firefox本身相同的编译器 - 否则二进制兼容性只是没有给出。目前这means using Visual C++ 10,通过免费的Visual Studio Express 2010或通过其他方式。

如果XPCOM组件的目的只是运行一些本地代码,那么你可以考虑编译一个规则的DLL,并通过js-ctypes调用它,然后你可以使用任何你喜欢的编译器 - 没有二进制兼容性约束(它也是通常值得推荐,因为您不再需要为每个Firefox版本重新编译)。