1.静态链接库的创建,创建的时候比较简单,不需要导出什么的
2.静态链接库的使用
1.通过配置vs(配置三项,头文件路径,lib文件目录和lib文件名称)
-
-
添加头文件路径
- 右键主项目 → 属性 → C/C++ → 附加包含目录,添加静态库头文件所在目录(如
../mylib
)
- 右键主项目 → 属性 → C/C++ → 附加包含目录,添加静态库头文件所在目录(如
-
链接库文件
- 在 属性 → 链接器 → 常规 → 附加库目录 中添加
.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"