MSVC2012终于“真正”支持C++11了(Windows XP Targeting)!

老邓 2012-11-06 11:49:52
加精
Visual Studio 2012 (MSVC2012,即VC11) 虽然早已发布,但由于编译的程序不能在Windows XP上跑,一直被很多人无视。如今形势有变。
看这个文章:CTP of Windows XP Targeting with C++ in Visual Studio 2012

提取出来的纯命令行编译器:
1. 已应用Update 1 CTP4补丁,支持Windows XP Targeting
2. 集成应用补丁后的Windows SDK 7.1
3. 集成原生的32位与64位编译器。
下载:http://download.csdn.net/detail/loaden/4745378

代码:
#include <iostream>
#include <thread>

void wait(int seconds)
{
std::this_thread::sleep_for(std::chrono::seconds(seconds));
}

void thread()
{
for (int i = 0; i < 6; ++i)
{
wait(2);
std::cout << i << std::endl;
}
}

int main()
{
std::thread t(thread);
t.join();
return 0;
}

动态链接编译CRT:
cl /EHsc /MD -c test.cpp && link /SUBSYSTEM:CONSOLE,5.01 test.obj && test.exe

默认是静态链接CRT的:
cl /EHsc -c test.cpp && link /SUBSYSTEM:CONSOLE,5.01 test.obj && test.exe


在XP上测试,一切正常。
环境变量:
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\8.0\include\shared;C:\Program Files (x86)\Windows Kits\8.0\include\um;C:\Program Files (x86)\Windows Kits\8.0\include\winrt;

LIB=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86;

PATH=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\VCPackages;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Performance Tools;C:\Program Files (x86)\Windows Kits\8.0\bin\x86;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\;C:\Perl64\site\bin;C:\Perl64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\Git\cmd;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\


更新使用这个:vsupdate_KB2707250.exe
比较慢:因为要下载。
测试的是CTP4。

...全文
20651 237 打赏 收藏 转发到动态 举报
写回复
用AI写文章
237 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天狐213 2013-08-29
  • 打赏
  • 举报
回复
我想写个多线程的不依赖平台的函数,2010不支持怎么办?
香烟腊肠 2013-05-14
  • 打赏
  • 举报
回复
不错 支持楼主 与CodeBlocks兼容的非常好
樱桃的枫 2013-01-29
  • 打赏
  • 举报
回复
表是那个大师级入门代码我看懂了,不费吹灰之力。
小乌龟码码 2013-01-25
  • 打赏
  • 举报
回复
真的可以拿到10个积分吗 我也来试试 真的是小技巧啊
FrankHB1989 2012-12-15
  • 打赏
  • 举报
回复
引用 210 楼 Guilty 的回复:
一种人是刀匠,另一种是砍柴的,不知道是不是这个原因,根本就两个职业的。 完全话不投机,我干我的活,你们继续研究语言吧。
如何适用语言这种实用问题都被你当成“研究语言”了?……见识未免太那啥吧? 我可以给你几个一般用户的确不必纠结的“研究语言”的几个范例: ISO C中,一个variable是不是一个expression?ISO C讨论的memory包含不包含register?(ISO C++中,答案都是明确的“不是”,参考Clause 3和1.7)。
mewanglu 2012-12-15
  • 打赏
  • 举报
回复
2010和2012两种编译器都有,正在摸索过程中。。。。。。
helloleoking 2012-12-12
  • 打赏
  • 举报
回复
支持vs11, c++11的特性太给力了
疯狂的红豆 2012-12-12
  • 打赏
  • 举报
回复
引用 7 楼 Sad_Sugar 的回复:
不知道我们学生现在用哪个好一点? 有没有必要用最新的编译器啊? 课上老师都让用的VC6.0……
最初学习很多都是VC++6.0的编译器,后面最好转,学习C++多或是其他的时候最好用VS。
IT寒芯 2012-12-11
  • 打赏
  • 举报
回复
很好很强大!!
Star-light 2012-12-11
  • 打赏
  • 举报
回复
stl没更新,有variadic template又如何。。。
一刀切 2012-12-11
  • 打赏
  • 举报
回复
还在用VC6.0+XP
赵4老师 2012-12-11
  • 打赏
  • 举报
回复
尺有所短,寸有所长。 语法糖甜,语法糖苦。
potency 2012-12-01
  • 打赏
  • 举报
回复
VS2012很垃圾,果断删除。编译的程序windows xp和win7下都无故退出。
rangf 2012-11-21
  • 打赏
  • 举报
回复
接分还来得及吧
LAONINGA098 2012-11-21
  • 打赏
  • 举报
回复
没用过vs2012,一直是2008
liyou1991 2012-11-21
  • 打赏
  • 举报
回复
哎.....不错哦。蛮有用滴哦
爱上ios 2012-11-20
  • 打赏
  • 举报
回复
引用 14 楼 Loaden 的回复:
不换行很蛋疼! 算了。 /SUBSYSTEM:WINDOWS,5.01 /SUBSYSTEM:CONSOLE,5.01 Guys, the XP stuff works with the Windows 8 SDK. No need to change to the other platform toolset if you really don¡¯t ……
同意
独自听枫 2012-11-20
  • 打赏
  • 举报
回复
微软很蛋疼,老是不兼容自己的东西,搞的大家很迷茫
9527 2012-11-20
  • 打赏
  • 举报
回复
喜欢围观打架,呵呵。语言只是实现目的的一种手段,不能说语言本身不重要,更重要的是如何利用,我们可以用汉语来写名著,一样也可以写大字报骂人。 对于标准的支持,主要是为了互通,这点在跨平台特别重要。现在open source的项目很多,如果没有一个共同遵守的原则,会有大量无谓的工作实现所谓的兼容上。
stereoMatching 2012-11-18
  • 打赏
  • 举报
回复
>看来得等win32彻底被淘汰,vc6才会被跟着淘汰。 如果是因为升级的代价太高(几十,几百万行代码) 那不敢升级是可以理解的 该谴责的是那些懒惰学习的程序员 尤其是那种连基本的文法都没学好就整天在那里喊 什麽C++代码可读性低的,没有责任感的程序员 并以此为藉口,一直不肯学习的懒人 这种程序员是我们最讨厌的 不了解莎士比亚不打紧,但是那些连英文的基本文法 都不了解,却在那里批评莎士比亚的文章写得太烂的人 根本就没有与之讨论的价值 连大师级人物写出来的范例程式都给他讲出垃圾 真是够了,连这麽简单的东西都看不懂还在那里评论C++ 我没有一门语言是精通的,所以都不乱评论 但我很讨厌这种半桶水在近乎无知的情况下 用自己的主观意见贬低其他的语言
加载更多回复(203)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧