在 Visual Studio 2012 中编译 Firefox 插件 [重复]

Posted

技术标签:

【中文标题】在 Visual Studio 2012 中编译 Firefox 插件 [重复]【英文标题】:Compile Firefox add-on in Visual Studio 2012 [duplicate] 【发布时间】:2012-10-07 07:26:13 【问题描述】:

可能重复:Compiling a MFC app from Visual Studio 2010 to 2012 RC results in LNK2038

我正在将一个 XPCOM Firefox 附加项目从 Visual Studio 2010 移动到 Visual Studio 2012。当我打开该项目时,Visual Studio 会询问我是否希望该项目使用最新的 C++ 编译器。如果我说不,那么我会得到这个编译错误:

错误 1 ​​错误 MSB8020:Visual Studio 2010 的构建工具 (平台工具集 = 'v100')找不到。使用 v100 构建 构建工具,单击项目菜单或右键单击 解决方案,然后选择“更新 VC++ 项目...”。安装视觉 Studio 2010 使用 Visual Studio 2010 构建 工具。 C:\程序文件 (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets 42 5 FF (Visual Studio 2010)

如果我说是,那么我会在 xulrunner-sdk\lib 目录中为 xpcomglue_s_nomozalloc.lib 收到其中五个编译错误:

错误 LNK2038:检测到“_MSC_VER”不匹配:值“1600”不匹配 匹配值“1700”

我无法安装 Visual Studio 2010。我想我可以使用 Visual Studio 2012 自己编译 Gecko,尽管这看起来工作量很大而且我不确定它是否会工作。所以请告诉我在 Visual Studio 2012 中编译我的 Firefox 插件的最佳方法。

【问题讨论】:

我已经看过那个帖子,这个问题不是重复的。在这种情况下,有问题的库是 XPCOM/Firefox 的库。 “您需要重新编译所有 .lib 或使用 DLL 的运行时链接”。解决方案应该适用。 它应该适用,这就是我在问题中提到它的原因,但是:(1)最终结果仍然适用于 Firefox 吗? (2) 是否有更好的解决方案,例如一个已经编译好的二进制文件? 五位版主竟然会一起出错,这让我很惊讶。人数上的实力!我个人不在乎,因为弗拉基米尔帕兰特已经给了我需要的答案。但是,如果您想用这样的错误重复标志污染 SO,请继续。 @HappyNomad 重复的答案说这个问题是由编译器版本不匹配引起的。看起来确实是这种情况,所以这是一个骗局。如果您仍然认为这是错误关闭的,您可以在meta 上提出问题(PS:那些不是模组,他们是像您这样的五个用户。如果您可以让五个用户同意您的看法,那么这不是'骗子,它将重新打开)。 【参考方案1】:

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

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

【讨论】:

以上是关于在 Visual Studio 2012 中编译 Firefox 插件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio 2012 中编译 TypeScript 文件

在Visual Studio 2012中编译GTK3程序

在 Visual Studio 2012 中编译启用 CLR 的 C++ 项目时出现 C2248 错误

visual studio2012中 c语言编译出来的程序怎么暂停啊

将 VC++ 06 迁移到 Visual Studio 2012:从编译中删除 hcw

Visual Studio Express 2012 或 Express 2013 中是不是提供 64 位编译器?