zoukankan      html  css  js  c++  java
  • VC6.0创建DLL动态链接库四大要素

    原文:http://blog.csdn.net/wanghaihao_1/article/details/51098451

    要成功地编辑,编译和链接一个动态链接库,应该包括以下要素:建立工程文件,使用输出说明,应用初始化函数和编制函数功能。

    1.       建立工程文件

    在选取类型的时候要选择“Dynamic __Link Library”或者“MFC AppWizard(DLL)”。

    2.使用输出说明

       对DLL要输出的函数或者变量必须进行明确的说明。方法有两种,第一种是使用扩展名为def的模块定义文件,将要输出的函数以及变量放在该文件的export部分:

      /////////////////////////////////////////////////////////////////////////////////

     EXPORTS

    Function @1

    Function @2

      ////////////////////////////////////////////////////////////////////////////////

    其中@1、@2是指输出顺序号。

    另一种方法是使用扩展存储器属性__declspec(dllexport),这种方法的优点是无需使用单独的DEF文件,只需在函数说明以及原型前面加上__declspec(dllexport)即可。例如输出函数caller();

    ///////////////////////////////////////////////////////////////////////////

    __declspec(dllexport) void caller(char *p);

    __declspec(dllexport) void caller(char *p)

    {

    printf(“This is a caller”);

    }

    ///////////////////////////////////////////////////////////////////////////

    使用扩展贮存器属性说明的方法有不足之处,就是无法设定顺序号,无法说明私有属性,以及不便在说明中更改动态链接库的名称。

    3.       应用初始化函数

    DLL模块的调用和释放都是通过DllMain函数,所有的初始化和退出处理都是在这个函数中。如果不需要初始化和退出处理,可以不要这个函数,编译程序自动提供一个什么都不干的DllMain函数。DllMain函数的参数及结构如下:

    DllMain(HANDLE hMoudle, DWORD fdwReason, LPVOID lpReserved)

    这里函数名和参数类型都是固定的。函数根据fdwReason值来确定干什么,是初始化还是退出。

    4.       编制功能函数

    功能函数是指实现DLL要完成的功能的函数。它是一般的C、C++函数,只是要加上输出说明(如果要作为DLL输出函数的话)。

  • 相关阅读:
    Java 进程占用内存过多,幕后元凶原来是线程太多
    领域驱动设计系列文章(3)——有选择性的使用领域驱动设计
    领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力
    RabbitMQ
    Redis与Memcached的区别
    memcached源码分析-----slab内存分配器
    C# Finalize和Dispose的区别
    [IoC容器Unity]第四回:使用范例
    [IoC容器Unity]第三回:依赖注入
    [IoC容器Unity]第二回:Lifetime Managers生命周期
  • 原文地址:https://www.cnblogs.com/lizhigang/p/6894018.html
Copyright © 2011-2022 走看看