本节书摘来自异步社区出版社《c++多线程编程实战》一书中的第1章,第1.2节,作者: 【黑山共和国】milos ljumovic(米洛斯 留莫维奇),更多章节内容可以访问云栖社区“异步社区”公众号查看。
本书所有的程序示例均在visal studio ide中运行。下面,针对visal studio介绍如何正确地设置ide,并指出一些影响多线程应用程序的具体设置。
准备就绪
确定安装并运行了visual studio(vs)。
操作步骤
运行visual studio,在【开始】界面选择【新建项目】,会弹出一个有多个选项的窗口。在左边【模板】下面,选择【c++】,展开c++节点,有【clr】、【常规】、【测试】、【win32】等选项。然后,执行以下步骤。
1. 选择win32。在中间栏有两个选项:【win32控制台应用程序】和【win32项目】。
目前,我们使用【win32控制台应用程序】。【win32项目】用于有图形用户接口(gui)的应用程序,而不是控制台程序。如果使用控制台,要在项目属性中设置其他选项。
2. 选择【win32控制台应用程序】,并在窗口下方的【名称】右边为项目命名。我们把第1个win32控制台应用程序项目命名为<code>testproject</code>。在【位置】右边选择储存该项目文件的文件夹。vs将帮你创建一个文件夹,把用户刚才在【位置】输入的文件夹作为将来创建项目的默认文件夹。
现在,读者应该看到win32应用程序向导窗口。可以直接单击右下方的【完成】,这样vs会自动创建所有需要的文件。或者,选择【下一步】,然后在附加选项中勾选【空项目】。如果这样做,就要自己创建源文件和头文件,vs不会自动生成所需的文件。
4.<code>testproject.cpp</code>文件出现在中间的窗口,这就是编写代码的地方。以后,我们会在更复杂的项目中创建和使用更多的文件,现在先暂时介绍这么多。
示例分析
每个程序都必须有自己的主例程,即<code>main</code>。当运行程序时,操作系统从调用<code>main</code>开始。这是执行c++程序的起点。如果编写的代码遵循<code>unicode</code>编程模型,就可以使用main的宽字符版本<code>wmain</code>。当然,也可以使用定义在t<code>char.h</code>中的<code>_tmain</code>。如果定义了_unicode,<code>_tmain</code>函数相当于<code>wmain</code>函数;如果没有定义_unicode,<code>_tmain</code>函数相当于main函数。
在<code>testproject</code>窗口上方,有各种各样的按钮和选项。其中有一个包含win32可选项的下拉菜单,这个选项叫做【解决方案平台】。如果要创建32位可执行文件,就不用改动。如果要创建64位可执行文件,先展开下拉菜单,选择【配置管理器】,找到【活动解决方案平台】,选择【x64】选项。点击【确定】,然后关闭【配置管理器】窗口。
在创建64位可执行文件时,最重要的是更改项目属性中的设置。按下alt+f7,或者右键单击【解决方案资源管理器】中的<code>testproject</code>项目,选择【属性】,弹出<code>testproject</code>属性页窗口。在【配置属性】的【c/c++】的下拉菜单中选择【预处理器】。在【预处理器定义】中,把win32改成_win64才能创建64位可执行文件。其他设置暂不更改。
无论创建32位还是64位的代码,都要正确设置代码生成。创建c++项目时,可以选择该应用程序是否依赖用户pc上c++运行时所需的动态链接库(dll)。如果创建的应用程序不仅在本机上运行,还要在其他pc上运行,就要考虑这一点。用vs在本机开发应用程序,所需的c++运行时库已经安装,不会有任何问题。但是,在其他未安装c++运行时库的pc上运行这种应用程序,就有可能出问题。如果确认不依赖dll,则需把【运行时库】选项改为【多线程调试(/mtd)】的调试模式,或改为【多线程(/mt)】发布模式。调试模式或发布模式在【解决方案配置】的下拉菜单中可任意切换。
对于本书的程序示例,其他选项都不需要改动,因为32位和64位的机器都能运行32位可执行文件。运行时库作为c++软件包框架已经安装在pc中了,使用默认设置即可,应用程序在这样的pc中运行没有问题。