您的位置:首页 > 其它

__declspec(dllexport) 和 __declspec(dllimport)

2014-04-07 20:34 323 查看
在使用DLL中的函数或类 或变量时使用 __declspec(dllexport) 和 __declspec(dllimport)。

如果DLL和使用DLL的项目是在一个解决方案中,并产生了依赖关系,则使用DLL的项目只需要包含相关的“*.h”,并在项目的属性中添加.h文件所在的目录。

如果仅仅是使用一个DLL(假设是一个exe文件使用),我们 首先包含“*.h”,然后#pragma comment(lib, "*.lib"),并且exe文件和dll文件要放在一个目录,即是输出目录是一个。

上面两段是告诉我们如何引入DLL文件。

但是.h文件是怎么书写呢?

在DLL文件中,VC中win32项目的DLL项目自动生成时,可以产生一个标准的例子。如

dll.h:

#ifdef DLLWIN32_EXPORTS//命令行定义的

#define DLLWIN32_API __declspec(dllexport)

#else

#define DLLWIN32_API __declspec(dllimport)

#endif

// 此类是从 dllwin32.dll 导出的

class DLLWIN32_API Cdllwin32 {

public:

Cdllwin32(void);

// TODO: 在此添加您的方法。

};

extern DLLWIN32_API int ndllwin32;

DLLWIN32_API int fndllwin32(void);

我们使用这个DLL时,就是要包含这里的dll.h,这里的宏在.h里值是__declspec(dllexport),但是在我们调用它的.cpp里,由于没有DLLWIN32_EXPORTS,所以值为__declspec(dllimport),这样就是很标准的写法了,如果我们不使用自动生成的方法,我们可以参考这么写。

注意:MFC类除了扩展类,其他的不能作导出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: