__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类除了扩展类,其他的不能作导出。
如果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类除了扩展类,其他的不能作导出。
相关文章推荐
- __declspec(dllexport) & __declspec(dllimport)
- Windows DLL编程中的导入导出:__declspec(dllimport) ,__declspec(dllexport) ,
- __declspec(dllexport)和__declspec(dllimport)
- __declspec(dllexport)与__declspec(dllimport)
- __declspec(dllexport)和__declspec(dllimport)
- 编写DLL函数时的 __declspec(dllexport) 与 __declspec(dllimport)
- __declspec(dllimport)和__declspec(dllexport)的区别,以及有关c/c++调用约定
- __declspec(dllimport) 和__declspec(dllexport)
- _declspec(dllexport)和_declspec(dllimport)
- Windows DLL编程中的导入导出:__declspec(dllimport) ,__declspec(dllexport)
- __declspec(dllexport) & __declspec(dllimport)
- __declspec(dllexport)和__declspec(dllimport)
- __declspec(dllexport) & __declspec(dllimport)
- __declspec(dllimport)和__declspec(dllexport)的区别,以及有关c/c++调用约定
- __declspec(dllexport)和__declspec(dllimport)
- __declspec(dllexport) & __declspec(dllimport)
- 理解 __declspec(dllexport)和__declspec(dllimport)
- _declspec(dllexport) 与__declspec(dllimport) 的使用说明
- __declspec(dllexport)和__declspec(dllimport)
- __declspec(dllexport) & __declspec(dllimport)