不能链接dbus和c++
Can not link dbus with c++
我有一个简单的程序,其中包括dbus和使用基本函数,例如:
DBusError err;
dbus_error_init(&err);
当我尝试编译程序
时g++ -Wall --std=c++11 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -ldbus-1 main.cpp
我得到以下错误:
main.cpp:(.text+0x4b): undefined reference to `dbus_error_init'
main.cpp:(.text+0x5a): undefined reference to `dbus_bus_get_private'
main.cpp:(.text+0x79): undefined reference to `dbus_error_free'
main.cpp:(.text+0xf4): undefined reference to `dbus_connection_set_exit_on_disconnect'
main.cpp:(.text+0x114): undefined reference to `dbus_bus_request_name'
main.cpp:(.text+0x123): undefined reference to `dbus_error_is_set'
main.cpp:(.text+0x138): undefined reference to `dbus_error_free'
collect2: error: ld returned 1 exit status
我不明白。我试图编译类似的应用程序,但写在C和一切编译和链接。
把-l
选项放在最后:
g++ -Wall --std=c++11 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include main.cpp -ldbus-1
这里有一个相关的问题:gcc &这个顺序的重要性是什么?
此行为是预期的,根据文档:
man g++
…你可以混合选项和其他参数。在大多数情况下,你使用的顺序并不重要。使用时,顺序很重要同一种类的几种选择;例如,如果您指定-L more然后,按照指定的顺序搜索目录。同样,-l选项的位置也很重要。
…-llibrary
…在命令中写这个选项是有区别的;的链接器按顺序搜索和处理库和目标文件它们是指定的。因此,foo。0 -lz条。O在文件foo之后搜索库z。但是在酒吧之前。如果酒吧。0指的是z中的函数,这些函数可能没有被加载。
…
相关文章:
- 如何告诉qmake在从dbus xml生成文件时包含标头
- 使用 dbus-cpp 列出 WPA 请求方网络属性
- Windows Qt 二进制安装程序是否支持开箱即用的 DBus
- DBUS 代码在放置在守护进程内时崩溃,但在没有守护进程代码的独立独立 main() 函数中运行良好
- QT-Dbus 信号/插槽
- QT DBUS 挂载文件系统
- 在C++glib应用程序中连接到dbus信号的最简单方法
- 如何在Qt DBus调用中从QDBusMessage中提取返回的数据
- 这个Qt DBus信号连接代码是否正确
- Qt DBus 属性转换为映射
- QtDBUS:通过DBUS发送枚举
- 在Qt C++中连接用户特定的DBus会话
- Qt DBus未接收信号
- Qt中的Dbus org.bluez实现
- Qt-DBus:实现多个接口的注册对象
- dbus中丢失服务名称的原因可能是什么
- DBus和其他进程间通信方法的区别
- 当作为QDBusVariant/QVariant发送时,Qt DBus解组
- QList+QVariant+dbus,有什么区别
- dbus-c++中的断言错误,终止进程