我正在开发一个适用于Windows XP的防火墙应用程序。
为了实现这一点,我正在创建一个dll文件,可以在C#文件中使用。
对于Vista或更高版本,我使用了this code,但它没有编译。我赢得了sdk 2008,它显示了这个错误:
错误19错误LNK2019:未解析的外部符号_FwpmEngineOpen0 @ 20在函数“private:unsigned long __thiscall PacketFilter :: CreateDeleteInterface(bool)”中引用(?CreateDeleteInterface @ PacketFilter @@ AAEK_N @ Z)PacketFilter.obj FirewallVista“。
必须是一些项目属性设置问题,因为我知道所有的lib文件都是正确导入的。
答案 0 :(得分:4)
您似乎正在尝试从codeproject编译简单的WFP项目。上面的人可能不理解问题,但答案是:
长话短说:
Fwpuclnt.lib Rpcrt4.lib
构建并运行应用程序(您可能还需要将字符集更改为多字节)。
您必须修改源中的IP地址才能使示例正常工作。我选择了一个本地IP地址并做了
ping -n 100 192.168.100.200
请参阅ping返回,启动exe,并看到ping无法到达目的地(超时) - 例如。防火墙正在工作。然后按任意键以停止防火墙并再次看到ping到达目的地。
我会发布指向codeproject页面的链接,但由于我的信用额度不到10,所以我不能:-P
谷歌:“使用Vista的Windows过滤平台API的防火墙”希望这有助于任何试图构建此示例的人。
答案 1 :(得分:2)
您缺少图书馆参考。检查您是否已导入代码所期望的.lib。
编辑:缺少的导入来自您正在谈论的库。这可能表示您忘记导入该实际库的.lib,或者您需要将该项目中的.cpp
文件附加到您自己的项目中。换句话说,您需要的不仅仅是标题。
此外,如果您使用的是.NET,请考虑使用普通Vista Firewall API,因为它已经作为COM coclass公开,.NET可以与本地进行通信。