1

我正在编写一个 Windows 过滤平台 (WFP) 内核驱动程序,并且正在尝试添加一些标注。

我正在使用一些FWPM_LAYERGUID,例如

FWPM_LAYER_OUTBOUND_TRANSPORT_V4
FWPM_LAYER_OUTBOUND_TRANSPORT_V6
FWPM_LAYER_ALE_AUTH_CONNECT_V4
FWPM_LAYER_ALE_AUTH_CONNECT_V6

但是,在使用这些符号时,我得到了未解析的外部符号。

Error   LNK2001 unresolved external symbol _FWPM_LAYER_OUTBOUND_TRANSPORT_V4
Error   LNK2001 unresolved external symbol _FWPM_LAYER_OUTBOUND_TRANSPORT_V6
Error   LNK2001 unresolved external symbol _FWPM_LAYER_ALE_AUTH_CONNECT_V4
Error   LNK2001 unresolved external symbol _FWPM_LAYER_ALE_AUTH_CONNECT_V6

我正在使用以下标题

#define NDIS61 1

#include <ntifs.h>
#include <ntddk.h>
#include <wdf.h>

#pragma warning(push)
#pragma warning(disable: 4201)
#include <fwpsk.h>
#pragma warning(pop)

#include <fwpmk.h>
#include <fwpvi.h>
#include <guiddef.h>
#include <initguid.h>
#include <devguid.h>

我正在链接以下附加依赖项。

$(DDK_LIB_PATH)wdmsec.lib
$(DDK_LIB_PATH)fwpkclnt.lib

我找不到我缺少的东西,这些 GUID 似乎位于我正在构建fwmpk.h的库中。Fwpkclnt.lib

4

1 回答 1

1

正如RbMm在评论中回答的那样,解决方案是将语句移到#include <initguid.h>语句之前include <fwmpk.h>

#define NDIS61 1

#include <ntifs.h>
#include <ntddk.h>
#include <wdf.h>

#include <guiddef.h>
#include <initguid.h>
#include <devguid.h>

#pragma warning(push)
#pragma warning(disable: 4201)
#include <fwpsk.h>
#pragma warning(pop)

#include <fwpmk.h>
#include <fwpvi.h>
于 2018-04-08T14:34:57.180 回答