场景

当一个类在头文件被declspec(dllexport)定义的时候,说明该类将被导出,当提供给用户调用的时候,该头文件中可以保留declspec(dllexport)这个关键字,程序能够正常运行,但是明显不符合语法规范,如果是手动修改,每重新编译一次,都必须手动修改该头文件。

解决

创建一个头文件dlldefine.h,里面的内容如下:

#ifdef SEARCH_EXPORTS

#define SEARCH_CLASS __declspec(dllexport)

#define SEARCH_API extern "C" __declspec(dllexport)

#else

#define SEARCH_CLASS __declspec(dllimport)

#define SEARCH_API extern "C" __declspec(dllimport)

使用

创建的动态库,需要导出的类包含该头文件,使用SEARCH_CLASS取代导出的关键字,在预定义处理

器中添加SEARCH_EXPORTS,调用该动态库的只需要包含该头文件,因为在编译的时候没有定义SEARCH_EXPORTS,所以就实现了

导入的功能

本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1717099,如需转载请自行联系原作者

declspec(dllexport)和declspec(dllexport)的实际应用相关推荐

  1. 再写dll 关于declspec(dllexport)和declspec(dllimport)

    使用api 要先懂得怎么使用dll文件: 1.新建一个常规dll //dll.h #ifndef DLL_H #define DLL_H #ifdef DLL_EXPORTS #define DLLE ...

  2. 【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法

    转自:https://blog.csdn.net/qing666888/article/details/41135245 一,__ declspec(dllexport): 将一个函数声名为导出函数, ...

  3. dllexport, dllimport 官方文档翻译

    一 dllexport, dllimport Microsoft Specific The dllexport and dllimport storage-class attributes are M ...

  4. declspec(dllexport)与_declspec(dllimport) 异同

    declspec(dllexport)与_declspec(dllimport) 异同 2010-11-08 18:51 1 _declspec(dllexport)与_declspec(dllimp ...

  5. dllimport和dllexport作用与区别

    我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法.当然,如果你的DLL里全是C++的类的话 ...

  6. 学习编写测试桩之declspec (dllexport)篇

    动态库不能直接运行,也不能接受消息,他提供一些函数供执行他的程序或者动态库调用. windows API中的所有函数都包含在DLL中,其中有几个最为重要:Kernel32.dll,用户管理内存.进程和 ...

  7. MegEngine Windows Python wheel 包减肥之路

    01 写在之前 1.1 本文的目的 通过讲述在支持 MegEngine Windows Python wheel 过程中遇到的问题以及解决问题的流程,此文最后的解决方法可能不是最优,欢迎留言指正. 过 ...

  8. Windows C++中__declspec(dllexport)的使用

    __declspec是Microsoft VC中专用的关键字,它配合着一些属性可以对标准C/C++进行扩充.__declspec关键字应该出现在声明的前面. __declspec(dllexport) ...

  9. VC++动态链接库(DLL)编程(四)――MFC扩展 DLL

    VC++动态链接库(DLL)编程(四) ――MFC扩展 DLL 作者:宋宝华  e-mail:21cnbao@21cn.com   前文我们对非MFC DLL和MFC规则DLL进行了介绍,现在开始详细 ...

  10. windows核心编程学习笔记(六)动态链接库

    动态链接库有很多优点: •扩展了应用程序的特性 •可以用许多种编程语言来编写 •简化了软件项目的管理 •有助于节省内存 •有助于资源的共享 •有助于应用程序的本地化 •有助于解决平台差异 •可以用于一 ...

最新文章

  1. 近20个绚丽实用的jQuery/CSS3侧边栏菜单(转载)
  2. 2019年人工智能硬件与应用大趋势
  3. element table固定表头,表的高度自适应解决方法
  4. ue4 gpu构建_待在家里吗 为什么不构建GPU Box!
  5. request failed with status code 500翻译_英语歌词的文言文翻译:文艺清新还是矫揉造作?...
  6. python type
  7. java 排序经典算法,经典排序算法(java版)
  8. git 实践(二) push的使用
  9. AndroidStudio意外崩溃,电脑重启,导致重启打开Androidstudio后所有的import都出错...
  10. Cesium 显示CZML数据
  11. java中访问权限控制顺序_Java中的四种访问权限控制 | 学步园
  12. SDR WiFi平台 gr-ieee802-11 软件无线电实现802.11协议
  13. Web测试与App测试的区别
  14. 记一次戴尔灵越7000(7000-7591)的坑爹螺丝设计,中招了保修都没门
  15. Win7 开启自带WIFI进行手机抓包
  16. python中五个一行输出_python 如何将一系列数字十个一行输出
  17. Flutter面试总结(2022)
  18. 关于oracle中ora-00600的报错
  19. 集成Health Kit时因证书问题出现错误码50063的解决方案
  20. linux的各种自带库-lz -lrt -lm -lc都是什么库

热门文章

  1. 微信小程序微商城(十):用户收货地址管理
  2. python缩进格式错误修改_Python,意外的缩进错误解析,Pythonunexpectedindent,解决,方法...
  3. winform获取appconfig配置文件得配置
  4. 5.abp框架code first方式删除表
  5. sqlserver CASE WHEN语句示例
  6. C#读写注册列表(写入注册列表,读取注册列表的数据)
  7. x11/xwindow GUI窗口代码范例
  8. LanguageTool最简范例代码
  9. 如何给硬盘分1T整数的空间
  10. 目录字串最后都不要带目录分隔符