C89:论静态链接库和动态链接库
一.静态链接库
想要生成静态链接库,只需要生成的.lib库文件和该静态链接库的.h头文件即可
.h是用来声明所需要的函数名称参数等
.lib静态库文件包含了源文件
1.
首先打开VS,新建Win32控制台应用程序,应用程序类型选择静态库,然后新建了静态链接库项目
2.
在源文件文件夹里面添加StaticLib.cpp源文件 在头文件文件夹里面添加StaticLib.h头文件
3.
1 2 3 4 | //StaticLib.cpp double Add( double a, double b){ return a+b; } |
1 2 3 4 5 | //StaticLib.h #pragma once extern double Add( double a, double b) |
4.
生成该项目的解决方案得到.lib静态链接库
5.
新建另一个Win32项目或者Win32控制台来使用静态链接库
6.
使用静态链接库
1 2 3 4 5 6 7 8 9 10 11 12 13 | //Mian.cpp //使用静态链接库的头文件 #include "StaticLib.h" //使用静态链接库的库文件 #pragma comment(lib,"StaticLib.lib"); int main(){ double a=Add(1.0,2.0); ... } |
二.动态链接库
动态链接库分为隐式链接和显式链接,并且DllMain这个函数并不是必需的,它可以用来初始化DLL,有点类似构造函数和析构函数
(1).隐式链接
动态链接库的隐式链接其实和静态链接库有点像
想要生成动态链接库的隐式链接,只需要生成的.lib库文件和该动态链接库的.h头文件即可
1.
首先打开VS,新建Win32控制台应用程序,应用程序类型选择动态库,然后新建了动态链接库项目
2.
在源文件文件夹里面添加DynamicLib.cpp源文件
在头文件文件夹里面添加DynamicLib.h头文件
3.
1 2 3 4 5 | //DynamicLib.h #pragma once extern "C" __declspec ( dllexport ) int Add( int x, int y); //注意declspec前是两个下划线 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //DynamicLib.cpp #include "DynamicLib.h" //DLL入口函数,可写可不写 /* BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch(ul_reason_for_call){ case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; } */ int Add( int x, int y){ return x+y; } |
4.
生成该项目的解决方案得到.lib动态链接库
5.
新建另一个Win32项目或者Win32控制台来使用动态链接库的隐式链接
6.
使用动态链接库的隐式链接
1 2 3 4 5 6 7 8 9 10 11 12 13 | //Mian.cpp //使用动态链接库的头文件 #include "DynamicLib.h" //使用静态链接库的库文件 #pragma comment(lib,"DynamicLib.lib"); int main(){ int a=Add(1,2); ... } |
(2).显式链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)