丁同亚的博客
夺朱非正色

1.静态链接库的创建,创建的时候比较简单,不需要导出什么的

2.静态链接库的使用

1.通过配置vs(配置三项,头文件路径,lib文件目录和lib文件名称)

    •   添加头文件路径

      •   右键主项目 → 属性 → C/C++ → 附加包含目录,添加静态库头文件所在目录(如 ../mylib
         
    •   链接库文件

      •   在 属性 → 链接器 → 常规 → 附加库目录 中添加 .lib 文件的路径
         
      •   在 链接器 → 输入 → 附加依赖项 中输入库文件名(如 mylib.lib
         
    •   包含头文件并调用函数

 2.代码指定

    #pragma comment(lib, "mylib.lib")  // 相对路径或绝对路径
    #include "mylib.h"

  3.通过项目引用(同一解决方案)

    •   若静态库和主项目在同一个解决方案中,右键主项目 → 添加 → 引用,勾选静态库项目。VS 会自动处理依赖关系和链接

 

 

动态链接库


/**

动态链接库需要导出声明
*/
#pragma once

#define E_C extern "C"//c语言风格
#define D_E _declspec(dllexport)//导出

E_C D_E int sub(int a, int b);

 

 显示引用(不需要头文件和lib文件)

#include <iostream>
#include "StaticLib1.h"
#include <Windows.h>
typedef int (*pSub)(int a, int b);//函数指针类型
int main()
{
    HMODULE mydll =  LoadLibrary(L"Dll1");//加载库
    if (mydll == NULL) {
        return NULL;
    }
    pSub sub = (pSub)GetProcAddress(mydll,"sub");//加载函数
    int ss = sub(3,2);//使用
    int a = add(2,5);
    std::cout << "Hello World!\n";
}

 隐式调用(需要头文件(.h)、导入库(.lib)和DLL文件(.dll))

如果没有.h文件 可以手动申明 导入函数extern "C" __declspec(dllimport) int Add(int a, int b);

  包含头文件,然后指定lib路径,dll要么放程序当前目录要么环境变量路径里.

    #pragma comment(lib, "mylib.lib")  // 相对路径或绝对路径
    #include "mylib.h"

 

posted on 2025-03-06 19:53  丁同亚的博客  阅读(77)  评论(0)    收藏  举报