windows编程:visual studio 使用第三方库

1,345 阅读2分钟

静态库的引入

一般第三方会给出.lib 文件与include文件.

1. 添加头文件路径

  1. 打开项目属性
    • 右键点击项目名称,选择 "属性"
  2. 导航到 C/C++ > 常规
    • 在左侧的树状结构中,展开 "C/C++" ,然后点击 "常规"
  3. 添加附加包含目录
    • 找到 "附加包含目录" ,点击右侧的下拉箭头,然后选择 "编辑"
    • 在弹出的窗口中,添加你的头文件路径。例如:C:\path\to\your\include

image.png

2. 添加库文件路径

  1. 导航到链接器 > 常规
    • 在左侧树状结构中,展开 "链接器" ,然后点击 "常规"
  2. 添加附加库目录
    • 找到 "附加库目录" ,点击右侧的下拉箭头,选择 "编辑"
    • 在弹出的窗口中,添加你的库文件路径。例如:C:\path\to\your\lib

image.png

3. 添加附加依赖项

  1. 导航到链接器 > 输入
    • 在左侧树状结构中,点击 "输入"
  2. 添加附加依赖项
    • 找到 "附加依赖项" ,点击右侧的下拉箭头,选择 "编辑"
    • 在弹出的窗口中,添加你需要的库文件名(如 yourlib.lib)。如果有多个库,可以用分号分隔。

image.png

额外的: 如果头文件就1个,直接拷贝到项目中进行添加即可. 如果.lib也就一个,直接在输入,附加依赖项中添加全路径名称即可.

动态链接库的引入

  1. 动态链接库如果给出的是.libinclude,那么与静态库的引入是一致的.
  2. 如果给出的是dll文件,那么不需要配置.自己通过LoadLibrary 函数进行加载,然后通过GetProcAddress 来获取函数即可.

示例 加载wintun:

InitializeWintun(void)
{
	HMODULE Wintun =
		LoadLibraryExW(L"wintun.dll", NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32);
	if (!Wintun)
		return NULL;
#define X(Name) ((*(FARPROC *)&Name = GetProcAddress(Wintun, #Name)) == NULL)
	if (X(WintunCreateAdapter) || X(WintunCloseAdapter) || X(WintunOpenAdapter) || X(WintunGetAdapterLUID) ||
		X(WintunGetRunningDriverVersion) || X(WintunDeleteDriver) || X(WintunSetLogger) || X(WintunStartSession) ||
		X(WintunEndSession) || X(WintunGetReadWaitEvent) || X(WintunReceivePacket) || X(WintunReleaseReceivePacket) ||
		X(WintunAllocateSendPacket) || X(WintunSendPacket))
#undef X
	{
		DWORD LastError = GetLastError();
		FreeLibrary(Wintun);
		SetLastError(LastError);
		return NULL;
	}
	return Wintun;
}