[英]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.