declspec(dllexport)和declspec(dllexport)的实际应用
场景
当一个类在头文件被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,所以就实现了
导入的功能
declspec(dllexport)和declspec(dllexport)的实际应用相关推荐
- 再写dll 关于declspec(dllexport)和declspec(dllimport)
使用api 要先懂得怎么使用dll文件: 1.新建一个常规dll //dll.h #ifndef DLL_H #define DLL_H #ifdef DLL_EXPORTS #define DLLE ...
- 【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法
转自:https://blog.csdn.net/qing666888/article/details/41135245 一,__ declspec(dllexport): 将一个函数声名为导出函数, ...
- dllexport, dllimport 官方文档翻译
一 dllexport, dllimport Microsoft Specific The dllexport and dllimport storage-class attributes are M ...
- declspec(dllexport)与_declspec(dllimport) 异同
declspec(dllexport)与_declspec(dllimport) 异同 2010-11-08 18:51 1 _declspec(dllexport)与_declspec(dllimp ...
- dllimport和dllexport作用与区别
我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法.当然,如果你的DLL里全是C++的类的话 ...
- 学习编写测试桩之declspec (dllexport)篇
动态库不能直接运行,也不能接受消息,他提供一些函数供执行他的程序或者动态库调用. windows API中的所有函数都包含在DLL中,其中有几个最为重要:Kernel32.dll,用户管理内存.进程和 ...
- MegEngine Windows Python wheel 包减肥之路
01 写在之前 1.1 本文的目的 通过讲述在支持 MegEngine Windows Python wheel 过程中遇到的问题以及解决问题的流程,此文最后的解决方法可能不是最优,欢迎留言指正. 过 ...
- Windows C++中__declspec(dllexport)的使用
__declspec是Microsoft VC中专用的关键字,它配合着一些属性可以对标准C/C++进行扩充.__declspec关键字应该出现在声明的前面. __declspec(dllexport) ...
- VC++动态链接库(DLL)编程(四)――MFC扩展 DLL
VC++动态链接库(DLL)编程(四) ――MFC扩展 DLL 作者:宋宝华 e-mail:21cnbao@21cn.com 前文我们对非MFC DLL和MFC规则DLL进行了介绍,现在开始详细 ...
- windows核心编程学习笔记(六)动态链接库
动态链接库有很多优点: •扩展了应用程序的特性 •可以用许多种编程语言来编写 •简化了软件项目的管理 •有助于节省内存 •有助于资源的共享 •有助于应用程序的本地化 •有助于解决平台差异 •可以用于一 ...
最新文章
- 近20个绚丽实用的jQuery/CSS3侧边栏菜单(转载)
- 2019年人工智能硬件与应用大趋势
- element table固定表头,表的高度自适应解决方法
- ue4 gpu构建_待在家里吗 为什么不构建GPU Box!
- request failed with status code 500翻译_英语歌词的文言文翻译:文艺清新还是矫揉造作?...
- python type
- java 排序经典算法,经典排序算法(java版)
- git 实践(二) push的使用
- AndroidStudio意外崩溃,电脑重启,导致重启打开Androidstudio后所有的import都出错...
- Cesium 显示CZML数据
- java中访问权限控制顺序_Java中的四种访问权限控制 | 学步园
- SDR WiFi平台 gr-ieee802-11 软件无线电实现802.11协议
- Web测试与App测试的区别
- 记一次戴尔灵越7000(7000-7591)的坑爹螺丝设计,中招了保修都没门
- Win7 开启自带WIFI进行手机抓包
- python中五个一行输出_python 如何将一系列数字十个一行输出
- Flutter面试总结(2022)
- 关于oracle中ora-00600的报错
- 集成Health Kit时因证书问题出现错误码50063的解决方案
- linux的各种自带库-lz -lrt -lm -lc都是什么库
热门文章
- 微信小程序微商城(十):用户收货地址管理
- python缩进格式错误修改_Python,意外的缩进错误解析,Pythonunexpectedindent,解决,方法...
- winform获取appconfig配置文件得配置
- 5.abp框架code first方式删除表
- sqlserver CASE WHEN语句示例
- C#读写注册列表(写入注册列表,读取注册列表的数据)
- x11/xwindow GUI窗口代码范例
- LanguageTool最简范例代码
- 如何给硬盘分1T整数的空间
- 目录字串最后都不要带目录分隔符