繁体   English   中英

MinGW - Header 不完整<netfw.h></netfw.h>

[英]MinGW - Header incomplete <netfw.h>

我正在C++中开发一个网络应用程序,它应该能够向 windows 防火墙添加规则。 我正在使用MingW g++ 编译器来关注这个示例 其他示例都可以正常工作,但这个特定示例不起作用。

我面临的确切问题是, NetFwRule未在 MinGW 提供的<netfw.h> header 中定义。 当我尝试使用 MSVC(在 Visual Studio 中)编译该示例时,它可以完美运行,因为NetFwRule是在 MSVS 提供的 header 中定义的。 但是,该项目绝对有必要使用 MinGW g++ 编译器。

示例链接中显示的此特定代码段将不起作用,因为NetFwRule

// Create a new Firewall Rule object.
hr = CoCreateInstance(
       __uuidof(NetFwRule), // <- Problem in MinGW g++, but in MSVC it just works
       NULL,
       CLSCTX_INPROC_SERVER,
       __uuidof(INetFwRule),
       (void**)&pFwRule
);

那么为了使用 MinGW 完成这项工作需要做些什么呢?

仅供参考:我为 i686 架构安装了带有 posix 线程的 MinGW 32 位。

g++ --version提供g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0

错误消息是: 'NetFwRule' was not declared in this scope

事实上它确实没有声明,因为 MinGW 的 <netfw.h> 没有声明 NetFwRule。 然而,MSVC 确实如此。

你的 GCC 太旧了。

您可以通过 MSYS 的 pacman 获得更新版本,或下载独立版本,例如从http://winlibs.com/下载,如果您不需要 MSYS2,它也可以正常工作。

好的,我尝试按照 IInspectable 的建议使用 MinGW 64 位,但这也不起作用 - netfw.h header 仍然不提供 NetFwRule。 但是我已经安装了 g++ 和 MSYS2(rustyx 正在使用的版本),它按预期工作。 因此,如果有人遇到同样的问题,我建议将 MinGW 与 MSYS2 一起使用,而不是独立使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM