我说编程细节 - 如何写Windows动态链接库

动态链接库是Windows的基础, 也可以说是操作系统的基础。


能为我们在系统开发中提供如下几个方面的优点:

(1).扩展应用程序 (不必为模块升级重写所有代码)

(2).便于程序员合作 (能为不同开发语言和工具开发者协作开发提供接口)

(3).节省内存 (使用时导入和内存只有一个实例化样本有效保证了内存合理利用)

(4).共享程序资源 (包括图片,对话框等)

(5).解决应用程序本地化问题 (便于远程升级和更新程序)

 

怎么样编写一个动态链接库呢? 以Win32为例按如下步骤实现:

1. 首先在VC++下建立DLL项目, 编写头文件:

#ifndef _DLL_XXXX_H_
#define _DLL_XXXX_H_
#include <iostream>
#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif

extern "C"
{
        DECLDIR int smaple1( int a, int b );
        DECLDIR void sample2( void );
}
#endif


2. 编写CPP源代码文件.


3. VC++中这里有两个方法来导出函数:
     (a).使用__declspec,一个Microsoft定义的关键字。

     (b).创建一个模块定义文件(Module-Definition File即.DEF)。


4. 模块定义文件(.DEF)

LIBRARY dll_tutorial
DESCRIPTION "our simple DLL"
EXPORTS
        Add @1
        Function @2

一个.def文件中只有两个必需的部分:LIBRARY 和 EXPORTS。其它四个可选部分标识为:NAME, STACKSIZE, SECTIONS, VERSION。


5. DLL的使用(链接方式)

 (A).隐式链接

     (1) 包含你的头文件

            #include "XXX.lib"

     (2) 链接你的库文件

            #pragma comment(lib, "XXX.lib")


 (B).显示链接

     (1) 包含windows.h

     (2) 使用SDK中的函数LoadLibrary()动态导入库.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值