C ++编译错误

Bar*_*run 3 c++ linker

我正在开发适用于Windows XP的防火墙应用程序。

为此,我正在创建一个dll文件,该文件可以在C#文件中使用。

对于Vista或更高版本,我使用了此代码,但尚未编译。我赢了sdk 2008,它显示此错误:

错误19错误LNK2019:在函数“专用:未签名的长__thiscall PacketFilter :: CreateDeleteInterface(bool)”(?CreateDeleteInterface @ PacketFilter @@ AAEK_N @ Z)PacketFilter.obj FirewallVista中引用了未解析的外部符号_FwpmEngineOpen0 @ 20。

这一定是一些项目属性设置问题,因为我知道所有lib文件都已正确导入。

use*_*472 5

似乎您正在尝试从codeproject编译简单的WFP项目。上面的家伙可能不理解这些问题,但是答案是:

  • 找到第一个功能链接器失败,然后在MSDN上找到它。FwpmEngineOpen0并找到它需要链接到哪个库并将其添加到项目属性/链接器/输入/其他依赖项
  • 实际上,在示例中,还有另一个函数无法链接UuidCreate

长话短说:

  1. 创建一个普通的Win32控制台应用程序(我是用VS2012完成的)并构建它-确保它能正常工作
  2. 将头文件添加到项目(PacketFilter.h)到项目
  3. 用(PacketFilter.cpp)内容替换主源文件,但不要删除文件顶部的“ stdafx.h”包含文件
  4. 将以下库添加到链接器部分(如上所述)

Fwpuclnt.lib Rpcrt4.lib

生成并运行该应用程序(您可能还需要将字符集更改为多字节)。

您必须修改源中的IP地址以使示例工作。我选择了一个本地IP地址并做了

ping -n 100 192.168.100.200

请参阅ping返回,启动exe并查看ping无法到达目的地(定时)-例如。防火墙正在工作。然后按任意键停止防火墙,然后再次ping通到达目的地。

我将把链接发布到codeproject页面,但是由于我的积分不足10,所以我无法:-P

Google针对:“使用Vista的Windows过滤平台API的防火墙”

希望这对尝试构建此样本的人有所帮助。