class CV_EXPORTS_W 定义浅析
来源:互联网 发布:淘宝达人广场的网址 编辑:程序博客网 时间:2024/05/21 16:55
我们转到CV_EXPORTS_W的定义,会发现定义如下
#define CV_EXPORTS_W CV_EXPORTS
那CV_EXPORTS又是什么呢?我们转到CV_EXPORTS的定义,如下
#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS
#define CV_EXPORTS __declspec(dllexport)
#else
#define CV_EXPORTS
#endif
这是什么意思呢?
CV_EXPORTS_W定义作为CV_EXPORTS别名,并在同一文件CV_EXPORTS被定义,换句话说,它的别名使用__declspec(dllexport)在windows平台上定义CVAPI_EXPORTS,否则它是空的。
我们可能有疑问__declspec(dllexport)的作用是什么?
__declspec(dllexport)的作用:
先看代码:
#ifndef _DLL_H_
#define _DLL_H_//防重复定义
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else
# define DLLIMPORT __declspec (dllimport)
#endifDLLIMPORTvoid HelloWorld (void);
#endif
上面代码里面的_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 的导出表中。
文章引用:独自等待、百度知道
http://zhidao.baidu.com/linkurl=TBzIgyQZc3ybfFLl7353yr58x5lYM7pxU4vBeszT7FG2agEJwMKoNiuO3lewR5qZamH5cSawJEC1XUFbREdbiULfugzYoE7tNf_fnJZz4q
http://blog.sina.com.cn/s/blog_4e7834f50100j8sy.html
- class CV_EXPORTS_W 定义浅析
- class CV_EXPORTS_W VideoCapture定义浅析
- 浅析Context Class Loader
- 浅析Context Class Loader
- 浅析Context Class Loader
- 浅析java class文件格式
- Class类源码浅析
- NSObject Class 浅析
- 浅析Class文件
- 云计算定义浅析
- SINGLETON宏定义浅析
- C#程序性能提升篇2 类型(字段类型、class和struct)的错误定义所影响性能浅析
- class 重定义
- class ,struct 定义类
- public class定义类
- 定义类class
- Java定义class
- Class定义和用法
- USACO天梯--Barn Repair
- Hadoop关于处理大量小文件的问题和解决方法
- POJ 1011 Sticks
- struts2 通过下拉框来手动切换国际化
- 机制设计专栏(3)-组合拍卖简介
- class CV_EXPORTS_W 定义浅析
- epoll实现
- angular 表单验证之ngMessages
- USACO天梯--Dual Palindromes
- go基本语法学习笔记之流程控制
- Swift iOS项目最佳实践汇总
- ThinkPHP笔记——配置分组产生无法加载Index错误解决办法
- swift for、for-in循环
- iOS捕获异常,常用的异常处理方法