项目初始

此处用的是vs2013

1.新建的时候建立Win 32程序

此时会跳出来一个窗口,Win 32 应用程序向导

在C语言和C++中,都能够进行封装,即C有函数封装,而C++通过类进行封装。

而dll和静态库,就是可以用来存放一些函数,或者类,可以拿来直接使用(封装过后使用)

官方定义:

1.  DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。

  DLL文件中存放的是各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减小程序的体积。

2.  静态库:静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。

详细解释:

windows中静态库lib和动态dll的区别及使用方法:http://blog.csdn.net/dxzysk/article/details/66477147

注:在进行编译的时候,头文件(即.h文件)不会被直接编译,而是附着在cpp文件中编译成一个个的 .obj 文件

程序编译时生成的中间代码文件。目标文件,一般是程序编译后的二进制文件,再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。

 

 资源链接很好理解,但链接器(LINK.EXE)?
    ——链接器(LINK.EXE)是链接.lib文件、.obj目标文件、.res;.lib文件又称之为导入库文件,只记录了函数所在DLL的位置。
vs中的debug和release的大区别:
  http://blog.csdn.net/lionel_coder/article/details/51913226
 不过简要说一下就是,debug是面向程序员或者是开发人员,而release面向的是使用者,即用户。
 
不过点击完成后:

编辑运行后,会出现下面这种情况:

 在用windows中的函数时,可以自行使用MSDN来进行参考各种函数的使用方法以及用法。

 1 #include <windows.h>
 2 
 3 #pragma comment (lib,"Winmm.lib")
 4 //导入库文件
 5 //无法解析的外部命令
 6 
 7 //入口 WinMain
 8 //windows 有自己的数据类型,基于CC++重定义的类型
 9 // __stdcall 表示函数的参数由右往左入栈(没有时会被警告)
10 int __stdcall WinMain(HINSTANCE hInstance,    //当前应用程序实例句柄
11     HINSTANCE hPrevInstance,                //当前应用程序父实例句柄(打开当前程序的前一个实例)
12     LPSTR lpCmdLine,                        //命令行
13     int nShowCmd)                            //显示方式(窗口最大,最小,隐藏...)
14 {
15 
16     MessageBox(NULL, "132", "abc", MB_YESNO);
17     /*
18         MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
19         HWND hWnd,            窗口句柄,消息盒子在哪个窗口之上
20         LPCTSTR lpText,        文本
21         LPCTSTR lpCaption,    标题文本
22         UINT uType            消息盒子的风格
23     */
24 
25     //PlaySound("123.wav",NULL, SND_ASYNC | SND_FILENAME | SND_LOOP);
26     //只能播放.wav
27     //播放音乐
28     mciSendString("open 123.mp3 alias a", NULL, 0, NULL);
29     //alias 是用来设置别名
30     mciSendString("play a", 0, 0, 0);
31     while (true)
32     {
33 
34     }
35     return 0;
36 }
原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8536040.html