win平台使用msvc的cl工具编译程序

2 篇文章 0 订阅

       最近下载了C++ primier 5th源码,使用nmake,cl命令工具编译的时候出问题了,如下代码报":语法错误",我也奇怪for (auto c : s)是什么鬼?

string s("Hello World!!!");
	// punct_cnt has the same type that s.size returns
	decltype(s.size()) punct_cnt = 0; 
	
	// count the number of punctuation characters in s
	for (auto c : s)         // for every char in s
		if (ispunct(c))      // if the character is punctuation
			++punct_cnt;     // increment the punctuation counter

问我码友,码友说这就是C++11新特性auto推导.所以我就知道问题所在了,我一直用的都是vs2010,是不支持c++11的,问题来了,要怎样支持C++11呢,网上查了下,几乎所有人都回复:"换更高版本编译器啊".

       我为啥坚持用2010呢,因为它体积小,安装速度快.好多年前安装过vs2012,那体积那个巨大啊,再者我电脑只有可怜的256G,说多了都是泪啊.问题来了,我既不想用体积巨大的高版本vs,又想使用C++11语句,怎么办?

       我想了下,按照之前配置nmake的经验,将另台装了VS高版本的电脑里的VS CMD开发工具链+头文件+LIB复制过来应该就好了,说做就做:

1.向我的码友要了VS2017的CMD开发工具链+头文件+LIB.

2.微软官网下载了win10 SDK安装程序,然后双击安装,等待安装完成.

3.按照这位高手博客配置了环境变量: https://blog.csdn.net/weixin_41115751/article/details/89817123

下图为环境变量配置过程:

新建环境变量INCLUDE,新建如下5行,首行为include.rar解压后路径,剩下4行为win10 sdk安装路径.

1) D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include

2) D:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared

3) D:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt

4) D:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um

5) D:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt

新建环境变量LIB,新建如下3行,首行为lib.rar解压后路径,剩下2行为win10 sdk安装路径.

1) D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\x86

2) D:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x86

3) D:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x86

配置VS cmd命令行cl,link,nmake工具链.新建如下路径.

D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\Hostx86\x86

配置完成后,进入cmd,nmake all进行编译

报错,C2732与lround冲突,

inits.cpp报错,看这个cpp,

包含了一个verson_test.h,就是这个头文佳出的问题,下图,咱们进入这个头文件

找到问题了,win10sdk头文件和这个头文件函数重定义,所以咱们把他屏蔽就好了

我使用#if方式屏蔽,发现没有,lround变成了虚线,代表屏蔽生效.

继续执行nmake all,又报错,见下图

看下图,报错部分代码,估计朋友们有疑惑了,返回值bool类型,而getline返回值为std::basic_istream<_Elem,_Traits> &,肯定报错呀.

看注释"Copyright (c) 2013 by Objectwrite, Inc., Josee Lajoie, and Barbara E. Moo."

这是人家大神写的代码,为啥这么写,我也不知道.

见下图,修改后的代码.

继续nmake all,编译成功.

查看目录,obj及exe皆已生成.

至此,代表我们的VS工具链(cl,link,nmake)已配置成功,可以使用makefile编译C++11代码.

附件为VS2017工具链资源及win10 SDK安装包,须在线升级,win10 SDK实在太大,就没有放资源,请谅解.

资源下载地址:

https://download.csdn.net/download/oqqsoap1234567/12513008

微软官方win10 SDK安装包源网址:

https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值