`
conkeyn
  • 浏览: 1529546 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

DLL导出类

阅读更多

DLL中定义的类可以在应用工程中使用。

  下面的例子里,我们在DLL中定义了point和circle两个类,并在应用工程中引用了它们(单击此处下载本工程附件 )。

//文件名:point.h,point类的声明

#ifndef POINT_H

#define POINT_H

#ifdef DLL_FILE

class _declspec(dllexport) point //导出类point

#else

class _declspec(dllimport) point //导入类point

#endif

{

public:

float y;

float x;

point();

point(float x_coordinate, float y_coordinate);

};

#endif


//文件名:point.cpp,point类的实现

#ifndef DLL_FILE

#define DLL_FILE

#endif

#include "point.h"

//类point的缺省构造函数

point::point()

{

x = 0.0;

y = 0.0;

}

//类point的构造函数

point::point(float x_coordinate, float y_coordinate)

{

x = x_coordinate;

y = y_coordinate;

}


//文件名:circle.h,circle类的声明

#ifndef CIRCLE_H

#define CIRCLE_H

#include "point.h"

#ifdef DLL_FILE

class _declspec(dllexport)circle //导出类circle

#else

class _declspec(dllimport)circle //导入类circle

#endif

{

public:

void SetCentre(const point ¢rePoint);

void SetRadius(float r);

float GetGirth();

float GetArea();

circle();

private:

float radius;

point centre;

};

#endif


//文件名:circle.cpp,circle类的实现

#ifndef DLL_FILE

#define DLL_FILE

#endif

#include "circle.h"

#define PI 3.1415926

//circle类的构造函数

circle::circle()

{

centre = point(0, 0);

radius = 0;

}

//得到圆的面积

float circle::GetArea()

{

return PI *radius * radius;

}

//得到圆的周长

float circle::GetGirth()

{

return 2 *PI * radius;

}

//设置圆心坐标

void circle::SetCentre(const point ¢rePoint)

{

centre = centrePoint;

}

//设置圆的半径

void circle::SetRadius(float r)

{

radius = r;

}

类的引用:

#include "..\circle.h"  //包含类声明头文件

#pragma comment(lib,"dllTest.lib");


int main(int argc, char *argv[])

{

circle c;

point p(2.0, 2.0);

c.SetCentre(p);

c.SetRadius(1.0);

printf("area:%f girth:%f", c.GetArea(), c.GetGirth());


return 0;

}


  从上述源代码可以看出,由于在DLL的类实现代码中定义了宏DLL_FILE,故在DLL的实现中所包含的类声明实际上为:

class _declspec(dllexport) point //导出类point

{



}


  和

class _declspec(dllexport) circle //导出类circle

{



}


  而在应用工程中没有定义DLL_FILE,故其包含point.h和circle.h后引入的类声明为:

class _declspec(dllimport) point //导入类point

{



}


  和

class _declspec(dllimport) circle //导入类circle

{



}

分享到:
评论

相关推荐

    DLL导出类的三种方法,导出接口类,导出类指针,导出类,不建议使用导出类

    本篇将详细讲解DLL导出类的三种常见方法:导出接口类、导出类指针以及导出类,并说明为什么通常不建议直接导出类。 1. 导出接口类 接口类(Interface Class)是一种只包含纯虚函数的抽象基类,不包含任何数据成员...

    MFC的DLL导出类

    "MFC的DLL导出类" 本文主要介绍了如何使用MFC扩展DLL来导出类的方法,包括创建MFC扩展DLL的步骤、建立输出类、创建窗口类DLL、编译DLL、建立DLL测试程序等。 MFC扩展DLL是指使用MFC框架创建的动态链接库,可以提供...

    C#调用C++DLL导出类

    导出类通常用于创建DLL,而导入类则用于在其他项目中使用这些DLL。例如: ```cpp // 在DLL中 class __declspec(dllexport) MyClass { public: void MyFunction(); }; ``` 然后,在C#端,我们需要使用DllImport...

    动态链接库dll导出类的方法 VC

    在这个“动态链接库dll导出类的方法 VC”项目中,我们有两个关键的工程:DllInstenceMfc用于生成DLL,而Test Dll则是调用这个DLL的应用程序。 首先,让我们深入了解一下VC++(Visual C++)环境中如何创建和使用DLL...

    编写DLL导出类

    "编写DLL导出类"是创建DLL时的关键步骤,它涉及到如何设计和实现DLL的核心功能,并提供一个清晰、稳定的接口供其他程序调用。下面我们将深入探讨这个主题。 1. **DLL的基础概念** - DLL是Windows操作系统中的一个...

    C++ DLL 导出类 示例

    一个简单的C++生成DLL(导出类),然后用控制台程序去调用它的示例,可以帮助你理解如何从DLL中导出类,并使用该类。 该项使用VS2010编译,低版本可能无法打开。

    MFC扩展DLL导出类

    本文将详细讲解如何创建和使用MFC扩展DLL(Dynamic Link Library)来导出类,并通过一个实际的例子来阐述这一过程。 首先,我们需要理解什么是MFC扩展DLL。MFC扩展DLL是一种特殊的动态链接库,它允许你在DLL中使用...

    【cmake实战十】c++从动态库(dll)导出类

    C++从DLL导出类涉及到两个主要步骤:定义导出标志和编写DLL及客户端代码。 1. 定义导出标志: 在C++中,我们需要为DLL接口定义一个特定的宏,用于标记哪些是对外可见的。通常有两种方法: - 使用`__declspec(dll...

    MFC静态DLL导出类并在子类调用父类中方法

    本代码为MFCDLL导出类技术调查程序, 程序通过静态DLL导出基类BaseClass和其子类SubClass, 并通过MFC应用程序UseDll.exe调用子类SubClass中的方法 和其继承发父类中的方法,输出相应的值。

    MFC 扩展DLL(导出类)

    本文将深入探讨MFC扩展DLL(Dynamic Link Library)中的导出类技术,帮助你理解如何创建和使用这类DLL。 MFC扩展DLL与常规DLL的主要区别在于它允许直接使用MFC类。这使得DLL可以包含MFC的成员函数,从而能够更方便...

    VC++动态链接库编程深入浅出_DLL导出类.zip

    本教程将深入探讨如何使用Visual C++(VC++)进行DLL编程,特别是关于DLL导出类的相关知识。 在VC++中,创建和使用DLL涉及到几个关键步骤: 1. **创建DLL项目**: 在Visual Studio中,选择“新建项目” -> ...

    vc在MFC扩展DLL中导出类.rar_DLL导出类_paintmpi_shelterlvb_vc在MFC扩展DLL中导出类_导

    vc在MFC扩展DLL中导出类,可以调用DLL中的类,仅供参考。源代码开源下载。

    [源码]比较成熟dll导出类示例(包含win32和mfc两种dll以及exe调用示例)

    [源码]比较成熟dll导出类示例(包含win32和mfc两种dll以及exe调用示例) 参考codeproject大神链接https://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL

    VC的DLL类导出后,用Delphi调用方法及源码

    本主题主要探讨如何在Visual C++(VC)中创建一个DLL,并导出类,然后在Delphi环境中调用这些类的方法。以下是详细的知识点解释: 1. **VC的DLL类导出**: 在VC中创建DLL时,我们需要定义一个或多个类,并通过`__...

    一步一步实现MFC扩展DLL中导出类和对话框

    本教程将关注如何在MFC扩展DLL中实现导出类和对话框,这对于创建可重用的组件或插件非常有用。 首先,我们需要理解什么是MFC扩展DLL。与标准DLL不同,MFC扩展DLL允许直接使用MFC类,这意味着我们可以直接在DLL中...

Global site tag (gtag.js) - Google Analytics