DLL专题之库的简介和静态库

来源:互联网 发布:普天网络会所 编辑:程序博客网 时间:2024/06/01 08:41

从现在开始,我们进入DLL专题.今天就从静态库开始.

首先,我们创建一个静态库:(VC里Win32 Static Library工程) ,选择空工程.增加头文件和实现文件(分别是StaticLib.h和StaticLib.cpp),代码如下:

StaticLib.h :

#ifndef _STATIC_LIBRARY_H_
#define _STATIC_LIBRARY_H_

#include "windows.h"

extern "C" void ShowMessage( LPCTSTR pstrMsg, LPCTSTR pstrTitle );

#endif//_STATIC_LIBRARY_H_

StaticLib.cpp:

#include "StaticLib.h"

void ShowMessage( LPCTSTR pstrMsg, LPCTSTR pstrTitle )
{
 MessageBox( NULL, pstrMsg, pstrTitle, MB_OK | MB_ICONINFORMATION );
}

这样就好了,我们编译连接就生成了静态库了.

然后,我们怎么用呢!在用之前,我们先说说库吧!

/*--------------------------------------------------------------------------------*/
         库的理解
静态链接库与动态链接库都是共享代码的方式,只不过是他们是在二进制级别上重用代码而已。
 对于静态链接库:
 1、lib中的指令被直接编译连接到最终的EXE文件中了
 2、静态链接库中不能再包含其他的动态链接库或者静态库
 对于动态连接库:
 1、DLL不必被被编译连接到最终EXE文件中,EXE文件执行时"动态"地装载和卸载DLL文件
 2、动态链接库中还可以再包含其他的动态或静态链接库
 3、DLL 的编写与具体的编程语言及编译器是无关的,COM也是这样。只要遵循DLL编写规
 范,DLL可以被任何语言调用

当然了,库的东西,不只是静态链接库与动态链接库。还有COM,COM和DLL一样也是一种跨语
言的二进制级别的代码共享,不过COM有更多的优点。以后,我们会专门讨论COM/COM+/DCOM/
ATL/ActiveX等
/*--------------------------------------------------------------------------------*/

使用静态库的方法如下:

//静态库的使用
#include ".//StcLib//StaticLib.h"
/*-----------------------------------------------------------*/
静态加载StcLib.lib
#pragma comment( lib, ".//StcLib//Debug//StcLib.lib" )表
示所在文件生成的.obj文件应与StcLib.lib一起连接,当然你也可以使
用VC开发环境设置。
/*-----------------------------------------------------------*/
#pragma comment( lib, ".//StcLib//Debug//StcLib.lib" ) 

void CDllDlg::OnBtnStaticlib()
{
 // TODO: Add your control notification handler code here
  ShowMessage( _T("Hello World!"), _T("Information") );
}

好了,静态库搞完了啊!

下回我们就进入动态连接库了.记的看啊!呵呵.