c++11程序能在任何CPU上工作吗?
does c++11 programs work on any CPU?
注意:在否决投票或类似的事情之前,这是一个一般性的问题,以了解更多的事情是如何进行的
问题很简单:假设我编译了一个带有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一代也没有那么不同。
- QSqlquery prepare()和bindvalue()不工作
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- CPU寄存器中返回的用户定义类型的C 对象.实例方法如何工作
- c++11程序能在任何CPU上工作吗?
- 如何以编程方式从工作线程获得父线程和兄弟线程的CPU利用率