无法正确包含 Libnm 和 Glib

Cannot include Libnm and Glib properly

提问人:Mhouney 提问时间:10/21/2023 更新时间:10/28/2023 访问量:56

问:

我尝试将 libnm 用作一个小的爱好工具。(CLI工具,例如,用于通过SSID与网络连接)

到我的设置:我使用 fedora linux 并安装了 .(glib 已安装并且是最新的)我还可以在目录中找到库的目录。正因为如此,我可以写 e. . 和。目前为止,一切都好。NetworkManager-libnm-devel/usr/include#include <libnm/NetworkManager.h>#include <glib-2.0/glib.h>

现在我收到错误消息,说找不到这些文件中的所有包含。(也当编译gcc main.cpp -o main.o)

这是我收到的错误消息:

(油嘴滑舌)

#include errors detected based on information provided by the configurationProvider setting. Squiggles are disabled for this translation unit (/path/to/project/src/main.cpp).C/C++(1696)
cannot open source file "glib/galloca.h" (dependency of "glib-2.0/glib.h")

或 (libnm)

cannot open source file "gio/gio.h" (dependency of "libnm/NetworkManager.h")

这是我目前使用的唯一代码:

#include <iostream>

#include <glib-2.0/glib.h>
#include <libnm/NetworkManager.h>

int main(const int argc, const char **argv)
{
    std::cout << "Hello, World!" << std::endl;

    return EXIT_SUCCESS;
}

我唯一能找到要做的事情就在这里:https://developer-old.gnome.org/libnm/stable/usage.html

有点遗憾,没有进一步的解释如何正确使用这个库。:(我希望有人能帮助我,谢谢!

C++ Linux WIFI GLIB

评论


答:

1赞 ptomato 10/22/2023 #1

包括路径相对于 的文件,如示例中所示/usr/include

#include <glib-2.0/glib.h>
#include <libnm/NetworkManager.h>

不是它们应该包含的方式,并且可能不起作用,因为这些标头包含其他依赖标头,这些标头相对于 找不到。/usr/include

在您链接的页面的“如何使用 libnm”部分中,它显示您必须将它们包含在

#include <glib.h>
#include <NetworkManager.h>

并使用 pkg-config 获取正确的编译器标志。添加到编译器命令行。$(pkg-config --cflags --libs libnm)

评论

0赞 Mhouney 10/26/2023
谢谢你的回答。我根据您的建议更改了代码。但是找不到标头 ''' #include < glib.h> #include <NetworkManager.h> '''。我真的不明白为什么,因为我在我的系统上安装了这两个库,并且这些库的目录也存在于我的设备上。
0赞 ptomato 10/27/2023
的输出是什么?pkg-config --cflags --libs libnm
0赞 Mhouney 10/27/2023
❯ pkg-config --cflags --libs libnm -I/usr/include/libnm -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libmount -I/usr/include/blkid -pthread -lnm -lgio-2.0 -lgobject-2.0 -lglib-2.0
0赞 Mhouney 10/28/2023 #2

我解决了这个问题。

@ptomato的建议对项目的编译起了作用!谢谢!

错误包含标头的原因只是 VS 代码中的智能感知问题。我更新了 C/C++ 扩展工具,重新启动了 VS Code,它突然起作用了。

工作项目可以在这里找到:GitHub

评论

0赞 Community 10/28/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。