您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页动态链接库教程dll

动态链接库教程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\

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

{ … }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务