VS2008下编写调试dll的一个实例.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:7 大小:20KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

VS2008下编写调试dll的一个实例.docx

VS2008下编写调试dll的一个实例.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VS2008下编写调试dll的一个实例(参考msdn)收藏演练:创建和使用动态链接库在本演练中,您将创建一个动态链接库(DLL),其中包含可供其他应用程序使用的有用例程。使用DLL是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练使用本机C++。有关使用本机C++创建静态库的演练,请参见演练:创建和使用静态库。有关使用面向公共语言运行库的VisualC++的演练,请参见演练:创建和使用托管程序集。本演练涵盖以下内容:•创建新的动态链接库(DLL)项目•向动态链接库添加类•创建引用动态链接库的应用程序•在控制台应用程序中使用类库的功能•运行应用程序先决条件本主题假定您具备C++语言的基础知识。创建新的动态链接库(DLL)项目1.从“文件”菜单中,选择“新建”,然后选择“项目…”。2.从“项目类型”窗格中选择“VisualC++”下的“Win32”。3.从“模板”窗格中,选择“Win32控制台应用程序”。4.为项目选择一个名称,如“MathFuncsDll”,并将其输入“名称”字段。为解决方案选择一个名称,如“DynamicLibrary”,并将其输入“解决方案名称”字段。5.按“确定”启动Win32应用程序向导。在“Win32应用程序向导”对话框的“概述”页中,按“下一步”。6.从“Win32应用程序向导”中的“应用程序设置”页中,选择“应用程序类型”下的“DLL”(如果可用),或者选择“控制台应用程序”(如果“DLL”不可用)。某些版本的VisualStudio不支持使用向导创建DLL项目。您可以稍后对此进行更改,以将项目编译为DLL。7.从“Win32应用程序向导”的“应用程序设置”页中,选择“附加选项”下的“空项目”。8.按“完成”创建项目。向动态链接库添加类1.若要为新类创建头文件,请从“项目”菜单中选择“添加新项…”。将显示“添加新项”对话框。从“类别”窗格中,选择“VisualC++”下的“代码”。从“模板”窗格中,选择“头文件(.h)”。为头文件选择一个名称,如“MathFuncsDll.h”,并按“添加”。将显示一个空白文件。2.添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。代码应与以下内容类似:复制代码//MathFuncsDll.hnamespaceMathFuncs{classMyMathFuncs{public://Returnsa+bstatic__declspec(dllexport)doubleAdd(doublea,doubleb);//Returnsa-bstatic__declspec(dllexport)doubleSubtract(doublea,doubleb);//Returnsa*bstatic__declspec(dllexport)doubleMultiply(doublea,doubleb);//Returnsa/b//ThrowsDivideByZeroExceptionifbis0static__declspec(dllexport)doubleDivide(doublea,doubleb);};}3.请注意上面的方法声明中的__declspec(dllexport)修饰符。这些修饰符使DLL能够导出该方法以供其他应用程序使用。有关更多信息,请参见dllexport,dllimport。4.若要为新类创建源文件,请从“项目”菜单中选择“添加新项…”。将显示“添加新项”对话框。从“类别”窗格中,选择“VisualC++”下的“代码”。从“模板”窗格中,选择“C++文件(.cpp)”。为源文件选择一个名称,如“MathFuncsDll.cpp”,并按“添加”。将显示一个空白文件。5.在源文件中实现“MyMathFuncs”的功能。代码应与以下内容类似:复制代码//MathFuncsDll.cpp//compilewith:/EHsc/LD#include"MathFuncsDll.h"#include<stdexcept>usingnamespacestd;namespaceMathFuncs{doubleMyMathFuncs::Add(doublea,doubleb){returna+b;}doubleMyMathFuncs::Subtract(doublea,doubleb){returna-b;}doubleMyMathFuncs::Multiply(d