winodws下的动、静态库的创建和调用

动、静态库的创建:

windows下两种库的创建:

  • 方法一
    项目右击 >> 属性 >> 常规 >> 配置类型 >> 选择对应的选项 >> 生成 即可;

  • 方法二
    image
    image

Windows下的动态库调用(.DLL)

显式调用动态库

  1. 调用 LoadLibrary(或相似的函数)以加载 DLL 和获取模块句柄。
HMODULE mt3 = LoadLibrary(L"dll文件路径");
  1. 调用 GetProcAddress,以获取指向应用程序要调用的每个导出函数的函数指针。由于应用程序是通过指针调用 DLL 的函数,编译器不生成外部引用,故无需与导入库链接。
FUN1 cardBasemsg = (FUN1)GetProcAddress(mt3,"接口名");
  1. 使用完 DLL 后调用 FreeLibrary。
FreeLibrary(mt3);

隐式调用动态库

  • 首先需要将封装好的动态库对应的头文件(库名.h)导入库(库名.lib)动态库(库名.dll)复制到工程目录下,程序编译好后需要在运行程序的路径下添加动态库(库名.dll)
#pragram comment(lib,"lib文件路径");

静态库调用(.lib)

Windows下:

此方法同时适用于两种库的调用
image
image

心得体会

动态库与静态库都有lib文件,但两者有着本质上的差别,静态库的lib文件为静态库本身,而动态库的lib文件则为导入库
静态库本身(lib)就包含了实际执行代码、符号表等等;
导入库只有少许信息(地址符号表等,确保程序找到对应函数的一些基本地址信息),实际执行代码则存放在动态库(DLL)中;

posted @ 2023-01-03 16:41  _神奇海螺  阅读(117)  评论(0编辑  收藏  举报