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"
浙公网安备 33010602011771号