我需要使用C::B与最新版本的MS VC++编译器一起使用,例如VS2015或VS2017,以及未来的版本,但是C::B没有提供这样的选项。在设置中,C::B允许用户从列表中选择的最新的VC++版本是VC++2010(MSVC++10.0),这个版本已经相当老了。经过一些搜索,我没有找到解决问题的方法。甚至C::B网站也没有提供解决方案。我该怎么办?
我需要使用C::B与最新版本的MS VC++编译器一起使用,例如VS2015或VS2017,以及未来的版本,但是C::B没有提供这样的选项。在设置中,C::B允许用户从列表中选择的最新的VC++版本是VC++2010(MSVC++10.0),这个版本已经相当老了。经过一些搜索,我没有找到解决问题的方法。甚至C::B网站也没有提供解决方案。我该怎么办?
A)安装并用于32位项目
安装最新版本的VC++编译器。
可以通过NuGet获取VC++工具集。
要获取NuGet,请参见此处:NuGet。
从命令行运行以下命令。该命令安装的最新版本为(根据MSDN):
c:\\> nuget install VisualCppTools.Community.Daily.VS2017Layout -Version 14.14.26423-Pre -Source https://visualcpp.myget.org/F/dailymsvc/api/v3/index.json
安装Microsoft Build Tools 2015(或更高版本)。这里我将使用2015版,但您也可以选择2017版。
对于2015版,安装程序在此处:BuildTools2015。运行它以安装工具。
打开C::B并进行配置。C::B针对Microsoft Visual C++的最新版本是2010。我们可以使用它,但需要设置一个更近期的编译器。
3.1 转到“设置”>>“编译器”
3.2 在“选择的编译器”中选择MS Visual C++ 2010。这是C::B中可用的最高版本。
3.3 选择“工具链可执行文件”选项卡,并将编译器目录设置为带有VC++工具集的目录。在我的情况下:
D:\VisualCppTools.14.0.25114-Pre\lib\native
确认选项卡中的“Program Files”框是否已填充。
3.3 选择“搜索目录”选项卡。
3.3.1 在“编译器”选项卡中添加包含目录路径。
在我的情况下是:
D:\VisualCppTools.14.0.25114-Pre\lib\native\include
可能还需要以下内容(来自生成工具)。
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
如果尚未存在且需要(在我的情况下),还需添加
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um
3.3.2 在“链接器”选项卡中输入库的路径。在我的情况下。
D:\VisualCppTools.14.0.25114-Pre\lib\native\lib
可能还需要添加
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x86
如果您的项目抱怨uuid.lib,则还需添加(在我的情况下),
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86
3.3.3 “资源编译器”选项卡。这是可选的。在我的情况下,
D:\VisualCppTools.14.0.25114-Pre\lib\native\include
就是这样!但如果我们喜欢的话,C::B允许我们更改编译器名称。
B) 更改C::B项目设置为x64项目
将链接库路径指向它们的x64对应项。在“设置”菜单中选择“搜索目录”>>“链接器”。
1.1 对于编译器库,请添加“amd64”。例如,在我的情况下:
D:\VisualCppTools.14.0.25114-Pre\lib\native\lib\amd64
1.2 对于“ucrt”和“um”,请在路径后面添加“\x64”。例如,在我的情况下:
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
对于编译器,请选择“工具链可执行文件”选项卡,并插入前缀“amd64\”作为C++编译器和Make程序,如:amd64\cl.exe,amd64\nmake.exe
就是这样了!
干得好!
以下是在Windows 7上安装MSVC 2015并编译面向x86目标机器的“普通”C++控制台应用程序(无CLI)时的编译器选项条目:
INCLUDE=
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt
LIB [x86]=
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib
C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x86
C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Lib\um\x86
LIBPATH=
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
我将INCLUDE
和LIB
添加到编译器和链接器的搜索目录中,对于x86控制台应用程序在C::B中一切正常。我没有尝试过x64架构...