window程序设计源码编译错误解决方法

看windows程序设计(第五版),前几章我用的编译器是dev C++。编译书上的源码各种报错。到后面的几章,有了rc资源文件,有的编译错误都不知道怎么改,真的是非常蛋疼,只能换编译器。
这里我先把源码的下载地址发一下,有需要的人可以下载Programming Windows 5th edition source code

处理源码的编译错误,主要有两种解决方案。
1.可以自己装个VC 6.0,新建一个项目,然后把相关的文件添加到这个工程
2.也可以使用比较新的编译器,比如Visual Studio 2017.稍微改一下项目的属性,也可以运行

VC 6.0

这里介绍一下,如何用VC 6.0来使用书上的源码
我们以第11章中的About1举例。
(1)打开vc6.0,按下ctrl n 新建工程,选择win32 Application,输入项目名称,这里我填的是About1。 点击确定vc1
(2)项目创建后,点击FileView视图,单击About1 files左边的小加号
vc2
(3)我们打开下载的源码文件夹,找到第11章的About1。文件夹中主要就是三个文件比较重要,.c源文件,.rc资源文件,.h头文件。我们接下来准备导入这三个文件
vc3
(4)在Source Files文件夹上右击,选择Add Files to Folder
vc4
(5)找到源码文件中的.c文件添加。点击确定。
vc5
(6)再在Header Files上右击,选择Add Files to Folder。
vc6
(7)找到.h文件添加。点击确定。
vc7
(8)在Resource Files上右击,选择Add Files to Folder。
vc8
(9)找到.rc文件添加。点击确定。vc9
(10)最后,我们在双击打开Source Files文件夹下的About1.c文件,编译运行就行了。程序是可以正常运行的
vc10

Visual Studio 2017

这里介绍一下,怎么用visual Studio 2017消除书上源码的编译错误(估计vs 2019的处理方法也差不多)
我们以第11章中的About1举例。

无法找到V142的生成工具

(1)我们打开文件夹,双击打开.sln文件
vs1
(2)打开工程文件后,我们看到输出栏里说,无法找到V142的生成工具。如下图vs2
(3)我们接下来来解决这个问题。首先右击About1这个项目,在弹出来的菜单中选择属性
vs3
(4)在弹出来的项目属性页中,找到配置属性下常规,再找到平台工具集这个选项vs4
(5)点击平台工具集,选择一个你安装过的平台工具集就行。我这里是Visual Studio 2017 (v141)
vs5

无法找到相应的windows SDK版本8.1

(6)然后再点击应用。
我们运行一下程序(按下F5),发现它又报了新的错误,无法找到相应的windows SDK版本8.1
vs6
(7)依然是右击About1这个项目,在弹出来的菜单中选择属性vs7
(8)找到配置属性下的常规,再找到Windows SDK版本这个选项vs8
(9)点击Windows SDK版本,选择一个版本,我的操作系统是win10。所以版本都是10.0
上面两个都可以用,随便选一个就行了
vs9

无法打开头文件afxres.h

(10)点击应用
我们再次运行一下程序(按下f5),发现它又报了新的错误,不能打开头文件afxres.h
vs10
(11)我们点击资源视图vs11
(12)在资源视图中,双击资源vs12
(13)在展开的文件中,双击.rc文件vs13
(14)Visual studio已经帮我们找到了错误,这里错误是在About.rc第10行上(红框中已经框了出来),在弹出的对话框中选择编辑代码vs14
(15)找到第十行,把afxres.h改成winres.h
vs15
(16)保存。再次运行程序,就可以使用了。vs16

===================================================================================
注意事项:
(1)源文件工程中,没有资源文件。如果使用的是vc6.0。那添加资源文件的那一步,就不用做了。如果使用的是vs 2017,那么程序应该在第二步完成后,就可以运行。(更改头文件名称的那一步就不用做了)

(2)为什么使用vs 2017打开源文件的时候,只需要打开.sln工程文件,vc6.0就只能新建一个工程,vc6.0不能直接打开.sln工程文件吗.
Vc6.0不能直接打开.sln工程文件。.sln文件是由vc++ .net 2003以上版本创建的,它的项目文件是.vcproj(相当于vc6的.dsp),解决方案文件是.sln(相当于vc6的.dsw)。Vc6.0的版本太老,打不开.sln文件。相关的具体介绍可以看这个如何用VC 6.0 打开Sln的工程文件

(3)使用vc6.0运行源码的时候,虽然我们创建了一个新的工程,但是不要删除源码文件夹(即programming-windows-5th-edition-master那个文件夹)。我们在工程中添加的文件实际上还是保存在原来的位置上,如果删除了源码文件夹,编译器就会报错,说找不到指定文件.

猜你喜欢

转载自blog.csdn.net/cookie_plus/article/details/108911377