dll的创建和引用

dll的创建和引用

ID:43324212

大小:57.50 KB

页数:6页

时间:2019-09-30

dll的创建和引用_第1页
dll的创建和引用_第2页
dll的创建和引用_第3页
dll的创建和引用_第4页
dll的创建和引用_第5页
资源描述:

《dll的创建和引用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、环境:VisualC++2003,Windows通过编码让你看到并想知道代码是如何运行的。假定你知道如何使用你的编译器特性,比如设置目录路径等等。为了建立项冃,请选择Win32控制台项冃(Win32ConsoleApplication),并且在应用程序设置标签(theadvancedtab)上,选择DLL和空项冃选项。DLLs可能并不如你想像的那样难。首先写你的头文件(headerfile);称为DLLTutorial.ho这个文件与其它头文件一样,其中只是一些函数的原型。JtifndcfDLLTUTORIALH^defineDLLTUTORIALH#include#

2、ifdefinedDLLEXPORT#dcfincDECLDIRdeclspec(dllcxport)#clsc#dcfincDECLDIRdeclspec(dl1import)itendifextern{DECLDIRintAdd(inta,intb);DECLDIRvoidFunction(void);}itendif前面两行指示编译器只包含这个文件一次。extern”C”告诉编译器该部分可以在C/C++中使用。在VC++中这里有两个方法來导岀函数:1、使用_declspec,一个Microsoft定义的关键字。2、创建一个模块定义文件(Module-DefinitionFileB

3、

4、J.DEF)0第一种方法稍稍比第二种方法简单些,但两种都工作得很好。―declspec(dllexport)导出函数符号到在你的DLL中的一个存储类。当下而一行被定义时我定义DECLDIR来运行这个函数,JtdcfincDLLEXPORT同时也导入函数如果下面一行^defineDLLEXPORT没有在源文件中出现。在此情况F,你将导出函数Add(inta,intb)和Function。。现在,你需要写一个将要称为DLLTutorial.cpp的源文件。#include#include"DLLTutoria1.h〃^defineDLLEXPORTextern{DECLD

5、IRintAdd(inta,intb){return(a+b);}DECLDIRvoidFunction(void){std::cout<<"DLLCalled!"<

6、,但是.def文件并不是Microsoft定义的。一个・def文件中只有两个必需的部分:LIBRARY和EXPORTS。让我们先看一个基本的.def文件稍后我将解析之。LIBRARYdlltutorialDESCRIPTION〃oursimpleDLL"EXPORTSAdd@1Function@2第一行,“LIBRARY"是一个必需的部分。它告诉链接器(linker)如何命名你的DLL。下面被标识为"DESCRIPTION"的部分并不是必需的,但是我喜欢把它放进去。该语句将字符串写入.rdata节[据MSDN],它告诉人们谁可能使用这个DLL,这个DLL做什么或它为了什么(存在)。再下面

7、的部分标识为“EXPORTS"是另一个必需的部分;这个部分使得该函数可以被其它应用程序访问到并且它创建一个导入库。当你生成这个项目吋,不仅是一个.dll文件被创建,而且一个文件扩展名为.lib的导出库也被创建了。除了丽而的部分以外,这里述有其它四个部分标识为:NAME,STACKSIZE,SECTIONS,和VERSION。我将不再在木文屮涉及这些内容,但是如果你在Internet±搜索,我想你将找到一些东西(译注:MSDN2003±对模板定义文件各部分内容有详尽解释,请参阅)。另外,一个分号⑴开始一个注解,如同在C++屮一样。现在你已经创建了你的DLL,你需要学习如何在一个应用程序中使

8、用它了。当这个DLL被生成后,它创建了一个.dll文件和一个.lib文件;这两个都是你需要的。隐式链接这里有两个方法来载入一个DLL;一个方法是捷径另一个则相比要复杂些。捷径是只链接到你.lib文件并将.dll文件置入你的新项目的路径屮去。因此,创建一个新的空的Win32控制台项目并添加一个源文件。将你做的DLL放入你的新项目相同的目录下。#ineludeintma

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。