c++11程序能在任何CPU上工作吗?

does c++11 programs work on any CPU?

本文关键字:工作 CPU 任何 程序 c++11      更新时间:2023-10-16

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

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

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

纠正问题中的错误

编辑:再问两个问题:

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

喜欢从旧版本(.exe)调用新版本(.dll)内的函数,所以我有2个文件:

1是用VS2010编译的,另外1是用VS2012编译的,用DLL EXPORT他们能那样工作吗?

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

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

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

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

移植到VS2012很简单,在VS2012中打开解决方案,并将其保存为VS2012解决方案。一切都会好的。

编辑:很可能,如果你是编程新手,默认情况下你所有的程序都是为32位处理器编译的,除非你写代码来改变这一点,所以你不应该担心。你可以在64位处理器上运行32位程序,而不是相反。如果你真的想更进一步,你可以编写一个可以在两个处理器上运行的程序;)

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

    ABI
  • <
  • 库/gh>

由于Windows是一个商业产品,这取决于你在做什么,你可以添加另一个因素

    环境

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

总的来说,VS不是那么好,当然它不是我用过的最好的编译器,基本上从GCC到Clang到MinGW的任何东西都可以很容易地取代VS,但是VS是Windows的官方编译器和环境,所以这是你大多数时候必须处理的。

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

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