• VC DLL 动态链接库(二)


      DLL 中导出函数的声明有两种:

      1. 在之前给出的在函数声明中加上 __declspec(dllexport), 在这就不再列举了

      2. 采用模块定义(.def) 文件声明, .def 文件为连接器提供了有关被连接程序的的导出, 属性及其他方面的信息

      下面让我们看看怎样用 .def 文件将函数 add 声明为 DLL 导出函数(需在 dllTest 工程中添加 lib.def 文件):

    // lib.def
    LIBRARY dllTest
    EXPORTS add @1

      .def 文件的规则为:

        (1) LIBRARY 语句说明 .def 文件相应的 DLL;

        (2) EXPORTS 语句后要列出要导出函数的名称,可以在 .def 文件中的导出函数名后加 @n, 表示要导出函数的序号为 n;

        (3) .def 文件中的注释由每个注释行开始处的分号指定,且注释不能和语句在同一行。

      由前文可以知道库分为静态库和动态库 DLL,深入到 DLL 内部, 其调用方式也分为静态与动态。

      静态调用方式的特点是由编译系统完成对 DLL 的加载和应用程序结束时 DLL 的卸载, 当调用某 DLL 的应用程序结束时,若系统中还有其他程序使用该 DLL, 则 Windows 对 DLL 的应用记录减一, 知道所有使用该 DLL 的程序都结束时才释放它, 静态调用方式简单实用, 但不如动态调用方式灵活。

    转载请注明出处:http://www.cnblogs.com/ygdblogs
  • 相关阅读:
    变量与常量
    .面向过程和面向对象的区别
    .JDK,JRE,JVM三者关系
    DEV C++, 利用链表实现目录内所有文件列表显示
    swith的用法和注意事项?
    Java排序(一)实现类的排序
    C++数据结构——树(基础知识篇)
    杀进程
    监控 monitor java 代码
    putty 直接连 快捷键方式
  • 原文地址:https://www.cnblogs.com/ygdblogs/p/5382523.html
Copyright © 2020-2023  润新知