博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++创建一个动态链接库工程
阅读量:7221 次
发布时间:2019-06-29

本文共 1331 字,大约阅读时间需要 4 分钟。

前话

在我们安装一些软件时,进入软件安装目录会经常看到.dll格式文件,系统system目录也存在许多dll文件

在软件游戏(window平台)更新的时候,很大部分是下载dll文件
所以会好奇这是什么?


简介

DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。

意义

DLL文件中存放的是各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减小程序的体积。

作用

在 Windows操作系统中,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。

通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个记账程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。
此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。


创建简单动态链接库实例

第一步——新建DLL空工程

DLL

第二步——新建源码文件(测试方法)

MyDLL.h(作为函数调用接口)

void __declspec(dllimport) func();

注意: __declspec(dllimport) 是将函数导出

MyDLL.c(函数实现)

#include 
#include "MyDLL.h"void func(){ printf("Hello DLL \n");}

第三步——工程Build

检查没有错误可以在debug目录中找到这两个文件

DLL文件

关于lib文件:

LIB有两种,一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是链接作用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不上LIB文件。 目标模块(EXE或者DLL)文件生成之后,就用不着LIB文件了。

下一章节我会对这两个文件和dll头文件拷贝到其他工程测试一下

转载于:https://www.cnblogs.com/pwc1996/p/5957867.html

你可能感兴趣的文章
你好,你有一份MySQL性能管理及架构设计指南待领取
查看>>
为什么HashMap不安全?
查看>>
swift2 语法 语法 判断键盘高度
查看>>
企业级 SpringBoot 教程 (一)构建第一个SpringBoot工程
查看>>
分布式服务:spring mvc +mybatis + Dubbo+Zookeeper+Proxy+Restful
查看>>
Python(生成执行文件)
查看>>
微软整合实验(八): Exchange2010 优化之证书配置
查看>>
总结隐藏dom的方式(是否占用空间)
查看>>
Java使用GoogleProtocolBuffer简单说明
查看>>
查看服务器IP连接数
查看>>
firewalld动态防火墙管理-centos7.5技能
查看>>
实现系统的一些经验
查看>>
Win2012R2 VDI RemoteFX Grid K2测试
查看>>
使用MySQLMTOP监控MySQL性能(一)
查看>>
Redis 主从配置
查看>>
Citrix XenApp应用虚拟化之RTX串号问题解决
查看>>
shell基础sed用法
查看>>
CSS奇技淫巧之实现波浪效果
查看>>
威胁告警:大量ubnt设备被植入后门
查看>>
控制textarea的字符个数
查看>>