選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

2.4 KiB

库相关知识点

静态库

  • 静态库的基本概念

    静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得
    所需的代码 ,复制到生成的可执行文件中的这种库。

  • 静态库的生成

    image-20250710102658220

    image-20250710102736776

  • 静态库的调用

    • 在工程配置中调用

      • 1.头文件的引用

      方案一:设置头文件目录

      将头文件复制到我们的工程文件中。

      方案二:

      image-20250710103535872

      1. 库文件的引用

        方案一:连接器设置库文件目录image-20250710103348996

        方案二:

        image-20250710105104029

        将lib添加到资源文件中

    • 在代码中语句加载lib调用

      使用#pragma comment(lib, "creat_static_lib.lib")指令

动态库

  • 动态库的基本概念

    动态库是一种在程序运行时才被加载的库文件,它包含了函数和数据,可以被多个程序共享。

  • 动态库的生成

    • 通过导出语句生成
    1. 先宏定义MATHLIBRARY_EXPORTS

    2. 写导出语句

    image-20250710133121032

    1. .C文件正常编写需要封装函数的逻辑
    • 通过模块文件生成

      image-20250710133513492

      image-20250710133559788

      image-20250710133741106

  • 动态库的调用
    在工程配置中调用

    导入头文件,引用

    image-20250710133846878

    在代码中语句加载lib调用

    #pragma comment(lib, "creat_static_lib.lib")

    在代码中语句加载dll调用

    dll文件复制到dbug下面,使用以下程序指令动态加载

      HINSTANCE Dll = LoadLibrary(L"test.dll");
      if (Dll == NULL) {
          std::cerr << "无法加载DLL! 错误码: " << GetLastError() << std::endl;
          return 1;
      }
      typedef void (*Func)(); // 定义函数指针类型
      Func add = (Func)GetProcAddress(Dll, "fun1");
      add();
      FreeLibrary(Dll);
      return 0;