0

注意:在否决票或类似的事情之前,这是一个一般性问题,可以更多地了解一切进展如何

问题很简单:假设我编译了一个具有 c++11 功能的程序(在 Windows 上使用 VS2012)是否可以保证该程序将在较旧的处理器上运行?(如 core 2 duo;因为大多数笔记本电脑都有这个)

我目前正在使用 VS2010,但发现需要 C++11 功能的库。所以我想将整个工作移植到 VS2012,但我对这将如何工作的了解有限

纠正问题中的任何错误

编辑:另外2个问题:

1 - 我可以将已编译的 c++11 程序与旧程序“混合”吗?

就像从旧版本(.exe)调用新版本(.dll)中的函数一样,所以我得到了2个文件:

1是用VS2010编译的,另外1是用VS2012编译的,用DLL EXPORT可以这样工作吗?

2 - 建议比 VS2012 for windows 更好的环境

4

3 回答 3

1

是的,编译器需要额外的库来构建程序。但这不应该影响在旧处理器上运行的能力。这种变化的唯一一次是当您尝试在 32 位处理器上运行 64 位程序时。

移植到VS2012很简单,在VS2012中打开解决方案,保存为vs2012解决方案。一切都应该没问题。

编辑:如果您是编程新手,那么您的所有程序默认情况下都是为 32 位处理器编译的,除非您编写代码来更改它,所以您不必担心。您可以在 64 位处理器上运行 32 位程序,而不是相反。如果你真的想加强它,你可以制作一个可以在两个处理器上运行的程序;)

于 2013-05-12T01:46:13.720 回答
1

只要构建目标的体系结构相同(x86 用于 32 位或 amd64 用于 64 位),您就不应该有任何问题。

当然,您需要为旧机器提供正确的运行时库来运行您的程序(对于当前架构)。

于 2013-05-12T01:47:06.650 回答
0

给定一个已编译的可执行文件,运行它的通常要求是:

  • ABI
  • 平台
  • 图书馆

并且由于 Windows 是一种商业产品,根据您在做什么,您可以添加另一个因素

  • 环境

这意味着有时软件公司会故意破坏与其他产品的兼容性以销售更多东西。

一般来说 VS 它不是那么好,当然它不是我用过的最好的编译器,基本上从 GCC 到 Clang 到 MinGW 的任何东西都可以轻松取代 VS,但是 VS 它是 Windows 的官方编译器和环境,所以这就是你必须要做的处理大部分时间。

如果您已满足列出的要求,您就可以开始了。

顺便说一句,Core 2 Duo 并没有那么老,而实际的 iCore 一代也没有那么不同。

于 2013-05-12T01:52:44.903 回答