簡體   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