C++动态链接库解析.doc

C++动态链接库解析.doc

ID:57665048

大小:1.88 MB

页数:16页

时间:2020-08-31

C++动态链接库解析.doc_第1页
C++动态链接库解析.doc_第2页
C++动态链接库解析.doc_第3页
C++动态链接库解析.doc_第4页
C++动态链接库解析.doc_第5页
资源描述:

《C++动态链接库解析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、我学院网woxueyuan.comC++动态链接库解析一,动态链接库的基本概念1.DLL(DynamicLinkerLibrary)的概念可以把DLL看做是一个仓库,它提供了一些可以直接拿来用的变量,函数或者类(但是不建议从DLL中获取变量),在历史的发展中,仓库经历了从“无库-静态链接库-动态链接库”的时代。静态链接库(.lib)和动态链接库(.dll)都是共享代码的方式。如果采用了静态链接库,则无论你愿不愿意lib中的代码指令都被直接包含进了最终生成的.exe程序中。但若是使用了动态链接库,该DLL则不会被包含进.exe程序

2、中,当.exe程序执行的时候,再“动态”的来引用或者卸载DLL。2.动态链接库的特点DLL文件可以被其他的语言所调用,例如C#或者Java等。譬如Window下的存在大量的DLL文件,当我们用Java编写Swing界面或者其他语言如C#等都是可以进行调用的。3.常见的动态链接库我学院网woxueyuan.com·我们在Window系统下面的system32文件夹中会看到kernel.dll、user32.dll和gdi32.dll。Window系统下的大多数API都是包含在这些DLL中。·kernel.dll中的函数主要处理内存

3、管理和进程的调度。·user32.dll中的函数主要控制用户界面。·gdi32.dll中的函数主要负责图形方面的操作。4.静态链接库和动态链接库的调用说明·从上图中可以看出,静态链接库和动态链接库都是在程序的“链接”阶段进行调用的,但是静态库和动态库的链接方式是不一样的。·静态库的链接是把.lib的代码指令全部链接到最终生成的EXE程序中。·动态链接库的链接是只链接.dll文件的地址引用,因此生成的EXE程序中不包含.dll的代码指令,所以.dll生成的可执行程序要比.lib生成的小很多,根据实验,一个仅包含printf的函数的

4、生成程序,在静态链接库中需要800k,而动态链接库只需要8k左右,可以见其差100倍。我学院网woxueyuan.com二,静态库的创建和调用1.静态链接库的创建①创建一个Win32控制台应用程序②点击下一步我学院网woxueyuan.com③选择静态库应用程序类型,去掉预编译和安全检查后,点完成。我学院网woxueyuan.com④项目创建完成后,添加MathUtils类我学院网woxueyuan.com⑤编写MathUtils类的.h和.cpp文件,为打包成静态库做准备我学院网woxueyuan.com⑥编写完成后,点击生成

5、程序即可,然后在Debug目录下就会出现.lib程序2.静态链接库的调用我学院网woxueyuan.com①按照上面的方式再创建一个项目,这里起名为TestLibDemo,注意这里的程序类型是控制台应用程序。然后编写main.cpp文件。②静态连接库的调用需要引入.h文件和.lib文件,因此我们把上面创建的MathUtils项目里的MathUtils.h和MathUtils.lib文件复制到TestLibDemo项目的文件夹下面,lib文件放在lib文件夹下我学院网woxueyuan.com③在main.cpp中引入MathUt

6、ils.h头文件,并编写测试用例④我们发现我们可以调用这些方法,但是却无法创建,这是因为我们只引入了头文件,并没有指定lib文件的位置和要链接的lib文件,所以需要我们在程序“链接”过程中将.lib文件包含到程序中。首先选中项目后右击项目点击“属性”,在“链接器-常规-附加库目录”这个选项里,将我们放置lib文件的目录指定出来。然后点击“输入-附加依赖项”将MathUtils.lib添加进入就可以了。我学院网woxueyuan.com我学院网woxueyuan.com⑤然后再重新运行测试程序就可以执行了我学院网woxueyuan

7、.com⑥还有一种非配置项目的方式链接lib文件,我们在配置好lib文件所在的目录后,可以在代码中指定要引入的静态库文件,但是要先把上面的附加依赖项里已经引入的lib文件去掉。我学院网woxueyuan.com3.静态链接库的总结在创建静态连接库的时候,需要注意要创建的是静态库程序,而非其他应用程序。在调用静态链接库的时候,需要准备的是头文件(.h)和静态库文件(.lib),缺一不可。然后把头文件和静态库文件放到项目的目录下,在编辑器中,在测试项目的链接器的输入栏中,指定要加载lib文件的目录。在引用lib的时候有两种,一种是编

8、辑器方式设置,另一种是在代码中设置。三,动态链接库的创建和调用1.动态链接库的创建①新建项目,这里的应用程序类型选择dll程序,选择导出符号,这样会默认为我们创建模板。我学院网woxueyuan.com②创建完成后的项目给我们包含了示例代码,包含了导出变量,导出

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

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

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