- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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中的
class _declspec(dllexpor
您可能关注的文档
- C语言运算符优先级别表.doc
- C语言高级教程学习板书.doc
- c调用matlab函数(混合编程).doc
- C重点知识点总结和习题.doc
- C面向对象程序设计(陈维新林小茶著).doc
- C面向对象程序设计论文.doc
- d.6自动化控制仪表安装工程secret.doc
- D1【宜统】建设工程项目施工阶段安全评价书.doc
- D2008F自定义磅单设置.doc
- d3000A290L相机参数.doc
- 300516_2024_#ESG_久之洋_2024年环境、社会及公司治理(ESG)报告_2025-03-28.pdf
- 301508_2024_#ESG_中机认检_中机寰宇认证检验股份有限公司2024年度环境、社会和公司治理(ESG)报告_2025-04-21.pdf
- 300693_2024_#ESG_盛弘股份_2024年环境、社会、公司治理(ESG)报告_2025-04-03.pdf
- 300339_2024_#ESG_润和软件_2024年度环境、社会和公司治理(ESG)报告_2025-04-22.pdf
- 300376_2024_#ESG#SD_ST易事特_2024年度可持续发展暨ESG报告_2025-04-29.pdf
- 300834_2024_#ESG_星辉环材_2024年度环境、社会及治理(ESG)报告_2025-04-29.pdf
- 301115_2024_#ESG_联检科技_2024年度环境、社会和治理(ESG)报告_2025-04-29.pdf
- 300308_2024_#ESG_中际旭创_2024年环境、社会及公司治理(ESG)报告_2025-04-21.pdf
- 想生科技产品注册公告及所需文件상생기술제품_등록_공고문_및_제출_서류.pdf
- 300760_2024_#SD_迈瑞医疗_2024年度可持续发展报告_2025-04-29.pdf
最近下载
- 测力环系数自动计算EXCEL.docx VIP
- 统编版小学语文一年级上册第八单元 观察 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 监理投标服务承诺书.docx VIP
- 金融风险管理-王金安-第5章 流动性风险管理.pptx VIP
- 赵一曼革命英雄人物故事课件课件(图文演讲)(1).pptx VIP
- 标准建设工程施工合同示范文本(2024版).docx VIP
- 公司数据管理制度.docx VIP
- 选择性必修1教材分析与教学建议 课件-2023-2024学年高中历史统编版(201.pdf VIP
- 改进的最小二乘法计算固结系数.pdf VIP
- 农机液压系统检修知到智慧树期末考试答案题库2024年秋黑龙江农业工程职业学院(南岗校区).docx VIP
文档评论(0)