提问人:Mhouney 提问时间:10/21/2023 更新时间:10/28/2023 访问量:56
无法正确包含 Libnm 和 Glib
Cannot include Libnm and Glib properly
问:
我尝试将 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
有点遗憾,没有进一步的解释如何正确使用这个库。:(我希望有人能帮助我,谢谢!
答:
包括路径相对于 的文件,如示例中所示/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)
评论
pkg-config --cflags --libs libnm
我解决了这个问题。
@ptomato的建议对项目的编译起了作用!谢谢!
错误包含标头的原因只是 VS 代码中的智能感知问题。我更新了 C/C++ 扩展工具,重新启动了 VS Code,它突然起作用了。
工作项目可以在这里找到:GitHub
评论