Qt 5.2,Win 7
当我注册服务QDBusConnection::registerService ( const QString & serviceName )
时,它使用系统 DBus连接(QDBusConnection::systemBus ()
)失败(“false”),但是使用会话DBus连接和同伴连接。
这就是我启动服务器的方式:dbus-daemon.exe --system --address=tcp:host=127.0.0.1,port=45000
截至QtService application cannot connect to system bus when running as a service我已尝试(see here)更改system.conf
<auth>ANONYMOUS</auth>
<allow_anonymous/>
我找到了另一个similar question here。我也尝试了那里描述的政策。
任何提示我如何克服这个问题,或者至少获得准确的错误信息?该方法的“错误”并没有真正帮助。
- 编辑---
下面的代码为我提供了连接的错误消息not connected to server
。方法QDBusConnection::systemBus()
是否不自动连接(与会话,对等方一样)?
QDBusConnection con = QDBusConnection::systemBus();
if (!con.registerService(ServiceName))
{
qCritical() << con.lastError().message();
qFatal("Cannot register DBus service, server started? dbus-daemon.exe --system --address=tcp:host=192.168.0.133,port=45000");
}
---编辑2,JB0x2D1的通讯----
我同意,也认为它与.conf
文件有关。
.conf
文件(当然,相应地更改了服务名称)很难说,问题是否与Windows相关,大多数示例显然都是Linux驱动的。不知道,“让所有人都能得到”的最小配置是什么。
答案 0 :(得分:1)
我发现此link的答案很有帮助。
根据链接提供的答案,您需要在正在运行的操作系统上安装dbus-launch(Ubuntu:sudo apt-get install dbus-x11)。
在终端上运行dbus-launch将启动dbus会话总线,还将在终端上打印出这种性质的文本:
DBUS_SESSION_BUS_ADDRESS = unix:abstract = / tmp / dbus-RKvgH2uzDI,guid = 37cfdf614fe9c896cc8790160018b974
DBUS_SESSION_BUS_PID = 18717
在运行需要会话总线执行IPC的应用程序之前,您需要将终端上打印的文本作为环境变量导出。
希望这会有所帮助。