专栏导航
本节前言
对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点,请你自行查阅。
我呢,也会提到一部分的参考课节。但是呢,你不应该依赖于我的主动提及。最好呢,你自己能够多去了解和查看本专栏目录。
本节,我们来讲解一个 Visual Studio 软件的操作技能,添加附加依赖项。
我们开始。
一. 添加附加依赖项有什么用?
在编写 Windows 程序时,我们常常会需要去引用许多的库,也就是去引用各种【.LIB】后缀的库文件。
在默认情况下,我们所编写的 Windows 程序,已经是引用了许多的库了。比如 kernel32.lib,user32.lib,gdi32.lib,等等。
可是,有些时候,我们所要引用的库,并不属于默认的库。这个时候呢,我们就需要自己亲自去指定这些个库了。
比如说,当我们需要调用 PlaySound 函数,来播放【.wav】后缀的音乐文件时,我们就需要用到 winmm.lib 。再比如,当我们去编写一个媒体播放器程序时,我们可能会需要去使用 mf.lib,mfplat.lib,mfuuid.lib,Strmiids.lib 等等的库。
以后有机会,我会领着大家,一起来实现一个简易的媒体播放器程序。预计,在讲完了【菜单】知识以后,我会尝试着领大家编写一个媒体播放器程序。
在这里,我所提到的 winmm.lib,mf.lib,mfplat.lib,mfuuid.lib,Strmiids.lib 等等的库,它们都不属于默认的库,都需要自己亲自操作 Visual Studio 软件,来格外添加这些个库。
所谓的添加附加依赖项,其实就是去添加,我们在程序中使用的【.lib】后缀的库文件。如果我们所需要使用的某个库文件,它属于是默认的库文件,那我们就不需要去格外添加了。
可是,如果,我们需要去使用的库文件,它不属于默认的库文件,我们就需要去格外添加它们。
本节,我们要领着大家一起来添加三个库文件:winmm.lib,mf.lib,mfplat.lib 。
添加这三个库,对于我们本节的示例程序来讲,没有任何用处。没有这三个库,我们的程序照样运行着。添加这三个库,只是为了让大家了解和掌握添加附加依赖项的方法而已。
二. 参考代码
为了向大家讲解添加附加依赖项的方法,我呢,首先得给出参考代码。
参考代码如下。
#include <Windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox(NULL, TEXT("这是一个 Windows SDK 程序"),
TEXT("WIndows SDK"), 0);
return 0;
}
上述代码块中的参考代码,就是本专栏第 1 章的代码。大家可以参考下述几篇文章来了解其中的代码逻辑。
参考课节:第1章 :第一个 Win32 程序,MessageBox 函数
本节,我们主要是来借着这样的代码,来讲解,如何在 Visual Studio 软件中添加附加依赖项。
请大家自行建立解决方案、项目和添加 C++ 源文件。
在我这里,我将解决方案与项目名称都命名为【tmp01】,将源文件命名为【WinMain.cpp】。
在这里,我使用 VS2019 来编译程序。编译好了的整个程序以及软件界面如下面的两个截图所示。
图1
图2
参考代码讲完了。
接下来呢,我们来总体地说明添加附加依赖项的步骤。
三. 添加附加依赖项的总体步骤
下面,我来给出添加附加依赖项的几个关键字。
项目,属性,链接器,输入,附加依赖项。
在下一分节,我们来具体讲解添加附加依赖项的步骤。
四. 添加附加依赖项的具体步骤
如本篇文章的第一分节所述,我们要领着大家添加三个库文件,它们是:winmm.lib,mf.lib,mfplat.lib 。
首先呢,我们一起来点选【项目】,【属性】菜单命令,如下图所示。
图3
【项目】菜单,它位于顶层的菜单栏里面,这个好找。【属性】菜单项,根据图3 的红色框线的标注,它的菜单项的名字为【tmp01 属性】。属性菜单项,它的名字,通常是【项目名称 + 属性】。如果你的项目名称为【test_01】,则【属性】菜单项的名字就会是【test_01 属性】。
点选了【属性】菜单项之后,会弹出下图所示的对话框。
图4
在图4 里面,我们找到红色框线所示的【链接器】选项,点击它左边的三角号,展开【链接器】选项,结果如下图所示。
图5
我们在图5 的【链接器】选项下面,找到【输入】字样,点选它,结果如下图所示。
图6
在图6 的右侧上方,我们用红色框线标注出了【附加依赖项】这一项。
在【附加依赖项】的右边,有一个框框。这个框框里面,是这个程序当前所具有的库。
此时,我们刚刚编译好程序,并未在里面添加任何库文件,所以,此时,里面的库文件,都是默认的库。我们来看一看,默认的库都有啥。
在这里呢,窝点击了【附加依赖项】右侧的框框,将鼠标光标定位在框框里面,然后将里面的文本内容给复制了下来。
在这里,我将所复制的内容整理在下面。
kernel32.lib,user32.lib,gdi32.lib,winspool.lib,comdlg32.lib,advapi32.lib,shell32.lib,ole32.lib,oleaut32.lib,uuid.lib,odbc32.lib,odbccp32.lib,%(AdditionalDependencies)
【%(AdditionalDependencies)】这一项,从名字上我们可以猜测,它指的是额外依赖项。除了它之外,其余的项,都是默认的库文件。
我猜,我们程序员手动添加的依赖项,应该都会包含在【%(AdditionalDependencies)】里面。
是不是那么回事儿,大家自己查吧。
在这里,我们来讲解,如何去手动添加库文件,也就是手动添加依赖项。
请大家一起来操作。大家用鼠标左键单击一下【附加依赖项】右边的框框,结果如下图所示。
图7
鼠标光标定位在【附加依赖项】右侧的框框里面以后,出现了一个如图7 的红色框线所示的向下尖角号。我们点击这个向下尖角号。结果如下图所示。
图8
在图8 中,在原本的框框下面出现了一个新的弹出框,这个弹出框里面有着【编辑】字样。我们点击这个【编辑】字样,结果如下图所示。
图9
在图9 的红色框线所标注的地方,是一个输入框,我们可以在里面手动输入各种库文件的名字。
需要注意的是,一个库文件占用一行,输入了一个库以后,如果还需要继续输入库文件名,那就按下回车键,另起一行来输入库文件名。
我们在里面输入三个库文件名,结果如下图的红色框线所示。
图10
为了方便大家的观察,我将图10 所示的对话框的上下方向,给拉高了一点,以便让输入框的高度可以更高一些,以便全部显示三行库文件。
再次提醒大家注意,一个库文件,需要单独占用一行。输入完了一个库文件以后,如果还想再添加库文件,那就按下回车键,另起一行来输入库文件。
如图10 所示,添加好了红色框线所示的三个库文件以后,我们点击右下角的【确定】按钮,回到下图所示的对话框。
图11
如图11 的红色框线所示,我们标注了两个按钮,分别是【应用】和【确定】按钮。
我们先点击【应用】按钮,再点击【确定】按钮。点击了【确定】按钮以后,对话框会关闭掉。我们会回到软件主界面。
这样,我们本节所要添加的三个附加依赖项就添加好了。
之前,我们所编译的程序,是未添加附加依赖项时候的程序。添加好了附加依赖项以后,它并不会自动生效。为了使我们刚刚添加的附加依赖项生效,我们还需要重新编译程序。
请大家依次执行【生成】,【生成解决方案】菜单命令。以编译程序,结果如下面的几个图所示。
图12
图13
看起来,似乎也没啥新玩意儿。似乎是说,我们添加的这三个库文件,没啥用。
实际上,对于本节的示例代码来讲,添加这几个库文件,确实是没啥用。
但是呢,对于某些程序来讲,你想要让程序正常运行,你的确是需要去添加一些个额外的库文件,没有相应的库文件,那么,你的程序里,是用不了某些 Windows 函数的。
总 结
Visual Studio 软件操作知识,也是需要大家去积累一下的。
在这里,我是领着大家学习了一下添加附加依赖项的方法。以后,大家还可能需要去使用软件其他的功能。
慢慢学习,慢慢地积累吧。
本节结束。