_declspec(dllexport)和_declspec(dllimport)
【摘要】
含义:
__declspec(dllexport)导出到dll
__declspec(dllimport)从dll导入
解决的问题:
考虑下面的需求,使用一个方法,一个是提供者,一个是使用者,二者之间的接口是头文件。头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用...
含义:
__declspec(dllexport)导出到dll
__declspec(dllimport)从dll导入
解决的问题:
考虑下面的需求,使用一个方法,一个是提供者,一个是使用者,二者之间的接口是头文件。头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用者那里,方法应该被声明为__declspec(dllimport)。
举例:
-
#ifndef _INC_MYSOCKETCLIENT_H_
-
#define _INC_MYSOCKETCLIENT_H_
-
#define Import_SSS
-
#ifdef Import_SSS
-
#define API _declspec(dllexport)
-
#else
-
#define API _declspec(dllimport)
-
#endif
-
-
#ifdef _cplusplus//extern"C" 来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。
-
extern "C" {
-
#endif // _cplusplus
-
API//导出函数,让外界调用。
-
int socketClient_Init(void **handle);
-
API
-
int socketClient_Send(void *handle, unsigned char *buf, int buflen);
-
API
-
int socketClient_Recv(void *handle, unsigned char *buf, int *buflen);
-
API
-
int socketClient_Destory(void *handle);
-
#ifdef _cplusplus
-
}
-
#endif // _cplusplus
-
#endif //_INC_MYSOCKETCLIENT_H_
-
存在Import_SSS的宏定义是提供者,不包含时,作为使用者。在Window时,采用LoadLibrary的方式加载dll时,二者都可以。
文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。
原文链接:wanghao.blog.csdn.net/article/details/108509976
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)