项目初始
此处用的是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 有自己的数据类型,基于C\C++重定义的类型 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 }