__declspec(dllexport)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__declspec(dllexport)相关的知识,希望对你有一定的参考价值。

__declspec(dllexport)

 (2010-06-17 10:04:28)
标签: 

__declspec

 

dllexport

 

导出

 

it

 
分类: C

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

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

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


DLLIMPORT void 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://www.cnblogs.com/chinasasu/archive/2010/04/04/1704277.html

以上是关于__declspec(dllexport)的主要内容,如果未能解决你的问题,请参考以下文章

使用可见性属性(没有 __declspec(dllexport))时,Clang 可以生成导入库吗?

转载 __declspec(dllexport) 和__declspec(dllimport)

__declspec(dllexport) 和 __declspec(dllimport)的区别

如何在 stl 模板中使用导出的类 (__declspec(dllexport))?

MFC dll def文件和_declspec(dllexport)问题

使用来自 C++ dll 的 __declspec(dllexport) 签名声明在 C# 中调用的问题