DBus は初めてですが、組み込みデバイス上の 2 つの Qt アプリケーションで使用しようとしています。1 つのスロットで構成される非常に単純なインターフェイスがあります。
QString SendMessage(const QString &cmd);
サーバー アプリケーションは、次のコードを使用して接続を開始します。
DbusService* dBus = new DbusService;
new interfaceIfAdaptor(dBus);
QDBusConnection connection = QDBusConnection::sessionBus();
bool ret = connection.registerService("com.domain.project.interface");
qDebug() << "returns" << ret;
ret = connection.registerObject("/", dBus);
qDebug() << "returns" << ret;
これはデスクトップ上で正常に動作します。組み込みシステムでは、connection.registerService 関数は false を返します。その結果、サーバーへのメッセージはすべて失敗します。理由はわかりません。「ps」を実行すると、[dbus-daemon —system] と [dbus-daemon —sesson] の両方が実行中であることがわかります。
最後に、アプリケーションをデバッグすると Qt Creator が文句を言うことに気付きました。次の警告メッセージが表示されます。
/opt/arm/lib/libQtDBus.so.4 など、10 個のライブラリの共有ライブラリ シンボルを読み込めませんでした。
完全なリストを表示するには、「info sharedlibrary」コマンドを使用します。
「set solib-search-path」または「set sysroot」が必要ですか?
/usr/lib/libdbus-1.so.3 の共有ライブラリ シンボルを読み込めませんでした。
「set solib-search-path」または「set sysroot」が必要ですか?
この問題をデバッグするために追加情報が必要な場合は、お知らせください。または、これを理解するために実行できる便利な dbus コマンドがある場合。ありがとう!