在VC中导出C++类

爱美从现在做起

爱美从现在做起

2016-02-19 14:25

今天图老师小编要跟大家分享在VC中导出C++类,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

  如何在VC中导出类,这是一个常有人问起的问题,下面我以一个简单的例子来说明这个问题:

  首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL。由于该类会被工程之外的文件所引用,所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。有两种方法可以引出类,使用__declspec(dllexport)定义和使用定义文件。

  下面先讲使用__declspec(dllexport)的方法:将类定义改为:class __declspec(dllexport) CInDLL 就可以了。(译者:你也许不相信会有这么简单,我也不相信。:-) 这样产生的工程在编译时是正确的但是在使用时会产生错误,因为你包含的头文件中也是使用__declspec(dllexport),而使用这个DLL的工程中并没有引出这个类,而是需要引入这个类)在使用时需要将类定义改为class __declspec(dllimport) CInDLL就可以了。

  使用定义文件可以有效的避免这个问题,这种方法是利用宏定义在不同的地方产生不同的编译代码:在头文件中加入如下的代码:

  #ifdef _CLASSINDLL     #define CLASSINDLL_CLASS_DECL     __declspec(dllexport)  #else     #define CLASSINDLL_CLASS_DECL     __declspec(dllimport)  #endif  #endif // ClassInDLL_H  //将class __declspec(dllexport) CInDLL改为  class CLASSINDLL_CLASS_DECL CInDLL  {   CInDLL();  ...  }
  
  在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  #define _CLASSINDLL  CInDLL::CInDLL()  {  }  ...

  这样一来在使用这个类时就可以不做任何改动了.

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

在VC中导出C++类

编程语言 网络编程
在VC中导出C++类

在 C++ 程序中导出 Word 文档的方法

编程语言 网络编程
在 C++ 程序中导出 Word 文档的方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何在Dll中导出STL类

C语言教程 C语言函数
如何在Dll中导出STL类

在VC中使用MATLAB C/C++函数库

C语言教程 C语言函数
在VC中使用MATLAB C/C++函数库

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C#从实体对象集合中导出Excel的代码

编程语言 网络编程
C#从实体对象集合中导出Excel的代码

接触VC之二:MFC类基础,C++程序编写规范介绍

C语言教程 C语言函数
接触VC之二:MFC类基础,C++程序编写规范介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

扫描仪为什么会有偏色

扫描仪为什么会有偏色

窗口类的诞生(注册自己的窗口类)2

窗口类的诞生(注册自己的窗口类)2
下拉加载更多内容 ↓