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