msvc的动态链接
参考微软doc 将可执行文件链接到 DLL
msvc的动态链接库分为隐式链接(Implicit Linking)和显式链接(Explicit Linking)
隐式链接需要:.h文件,.lib文件,.dll文件
显式链接只需要:.dll文件
隐式链接
这里的.lib
文件并不是静态库(static library)而是导出库(import library),两种库文件从文件名看不出任何区别,可以通过vs提供的工具lib.exe
判断一个lib文件是导出库还是静态库
lib /list
显示*.obj
的是静态库,显示*.dll
的是导出库
这是import library
这是static library
隐式链接用法
- 准备好三种文件,以openssl为例(.h .lib .dll)
- 添加头文件搜索,有两种方式,任选一种就可以,建议“附加包含目录”(区别请看:msvc 库目录/附加库目录 包含目录/附加包含目录的区别)
- 添加lib文件搜索目录,有两种方式,任选一种就可以,建议“附加库目录”(区别请看:msvc 库目录/附加库目录 包含目录/附加包含目录的区别)
- 添加需要链接的lib文件
显式链接
需要 LoadLibraryEx和GetProcAddress 函数