静态库的引入
一般第三方会给出.lib 文件与include文件.
1. 添加头文件路径
- 打开项目属性:
- 右键点击项目名称,选择 "属性" 。
- 导航到 C/C++ > 常规:
- 在左侧的树状结构中,展开 "C/C++" ,然后点击 "常规" 。
- 添加附加包含目录:
- 找到 "附加包含目录" ,点击右侧的下拉箭头,然后选择 "编辑" 。
- 在弹出的窗口中,添加你的头文件路径。例如:
C:\path\to\your\include。
2. 添加库文件路径
- 导航到链接器 > 常规:
- 在左侧树状结构中,展开 "链接器" ,然后点击 "常规" 。
- 添加附加库目录:
- 找到 "附加库目录" ,点击右侧的下拉箭头,选择 "编辑" 。
- 在弹出的窗口中,添加你的库文件路径。例如:
C:\path\to\your\lib。
3. 添加附加依赖项
- 导航到链接器 > 输入:
- 在左侧树状结构中,点击 "输入" 。
- 添加附加依赖项:
- 找到 "附加依赖项" ,点击右侧的下拉箭头,选择 "编辑" 。
- 在弹出的窗口中,添加你需要的库文件名(如
yourlib.lib)。如果有多个库,可以用分号分隔。
额外的: 如果头文件就1个,直接拷贝到项目中进行添加即可. 如果.lib也就一个,直接在输入,附加依赖项中添加全路径名称即可.
动态链接库的引入
- 动态链接库如果给出的是
.lib与include,那么与静态库的引入是一致的. - 如果给出的是
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;
}