动态链接库与静态链接库:
1.静态链接库:
创建:
新建一个类
分别在源文件和头文件中填加程序和声明:
F7编译,然后查找项目下的 TestLib.lib(debug文件夹下)和LibTools.h文件,复制到需要使用的项目下。
然后创建一个普通的控制台项目,将刚才的lib文件和.h文件复制到该项目中
现在就可以使用静态链接库中定义的函数了。
方式二:
函数的声明在.h文件中;函数的实现在.lib文件中。
静态链接库会编译在exe文件中,从地址来看是0040xxxx。没办法分清是自己写的还是静态链接库。
静态链接库缺点:
与模块化无关,二进制代码静态编译到exe文件中。
当静态链接库中的函数需要修改时,修改完毕后需要重新编译整个项目。
2. 动态链接库
创建DLL:
创建一个class:
分别在cpp文件和h文件中添加函数和函数声明
如果去掉 extern “C” 不指定按照C语言方式,就会按照C++方式。
加上 extern “C”
动态链接库,函数的实现在.dll文件中。(静态链接库函数的实现在.lib文件中。)
编译,然后将lib文件和dll文件复制到项目路径下。
__stdcall 表示内平栈。默认为_cdcall(外平栈)
然后再使用动态链接库中的函数,注意:先要将刚才settings->LINK下的lib删除。
我们发现它的地址不在exe中。需要修改dll中的函数时,直接修改dll中的函数,不用再重新编译。
方式二:
增加cpp和h文件
添加.def文件
然后编译,发现减法的函数名被隐藏