zoukankan      html  css  js  c++  java
  • __declspec(dllexport) 的意思与DEF导出函数的区别(转)

    先看代码:以下是在dev-c++里建立自已的dll时的dll.h里面的代码,这里面有一个:_declspec(dllexport)

    #ifndef _DLL_H_
    #define _DLL_H_//防重复定义

    #if BUILDING_DLL
    # define DLLIMPORT __declspec (dllexport)
    #else /* Not BUILDING_DLL */
    # define DLLIMPORT __declspec (dllimport)
    #endif /* Not BUILDING_DLL */


    DLLIMPORT void HelloWorld (void);


    #endif /* _DLL_H_ */

    上面代码里面的_delcspce(dllexport)被定义为宏,这样可以提高程序的可读性!这个的作是是将函数定义为导出函数,也就是说这个 函数要被包含这个函数的程序之外的程序调用!本语句中就是:void Helloword(void):

    摘自msdn:在 32 位编译器版本中,可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport) 将导出指令添加到对象文件

    若要导出函数,__declspec(dllexport) 关键字必须出现在调用约定关键字的左边(如果指定了关键字)。例如:

    __declspec(dllexport) void __cdecl Function1(void);

    若要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左边,如下所示:

    class __declspec(dllexport) CExampleExport : public CObject<br />{ ... class definition ... };

    生成 DLL 时,通常创建一个包含正在导出的函数原型和/或类的头文件,并将 __declspec(dllexport) 添加到头文件中的声明。若要提高代码的可读性,请为 __declspec(dllexport) 定义一个宏并对正在导出的每个符号使用该宏:

    #define DllExport   __declspec( dllexport ) 
    __declspec(dllexport) 将函数名存储在 DLL 的导出表中。如果希望优化表的大小

  • 相关阅读:
    25.大白话说java并发工具类-CountDownLatch,CyclicBarrier,Semaphore,Exchanger
    23.FutureTask基本操作总结
    22.线程池之ScheduledThreadPoolExecutor
    Jenkins + SVN搭建php持续集成
    Django学习系列之Form表单结合ajax
    Django学习系列之模板系统
    Django学习系列之路由系统
    zabbix学习系列之基础概念
    Python学习系列之反射
    Django学习系列之模板
  • 原文地址:https://www.cnblogs.com/chinasasu/p/1704277.html
Copyright © 2011-2022 走看看