创建静态链接库
1.创建一个空项目
2.添加文件
lib.h
#pragma once
void SayHello();
lib.cpp
#include "lib.h"
#include <iostream>
void SayHello()
{
std::cout << "Hello Lib!" << std::endl;
}
3. 配置项目属性
将“应用程序”修改为“静态库”。
4. 编译
编译生成解决方案后,可以看到工程目录下已生成.lib文件。
5. 测试
创建一个测试工程,并将生成的静态库文件MyLib.lib与头文件lib.h拷贝到工程目录下。
加载静态库并进行调用:
main.cpp
#include <iostream>
#include "lib.h"
#pragma comment(lib, "MyLib.lib")
int main()
{
SayHello();
return 0;
}
编译运行,可以看到输出
创建动态链接库
1.创建一个空项目
2.添加文件
dll.h
#pragma once
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
_declspec(dllexport) void SayHello();
dll.cpp
#include "dll.h"
#include <iostream>
void SayHello()
{
std::cout << "Hello dll!" << std::endl;
}
dllmain.cpp
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "dll.h"
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
3. 配置项目属性
将“应用程序”修改为“动态库”。
4. 编译
编译生成解决方案后,可以看到工程目录下已生成.dll文件和.lib文件。
注意:静态链接库有两种,这里的静态库是配合动态库使用的那种。
5. 测试
创建一个测试工程,并将生成的MyDll.dll、MyDll.lib与dll.h拷贝到工程目录下。
加载静态库并进行调用:
main.cpp
#include <iostream>
#include "dll.h"
#pragma comment(lib, "MyDll.lib")
int main()
{
SayHello();
return 0;
}
将dll.h修改为:
dll.h
#pragma once
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
_declspec(dllimport) void SayHello();
编译运行,可以看到输出
其他方法
以上展示的是从空白工程创建静态库与动态库的方法,实际上,VS提供了快速创建的模板,关于该方法的使用,可上网搜索到具体过程。