私はdbus-cxxを使用してdbus経由でメソッド呼び出しを行います。現在、複数の引数を返すメソッドがあり、最初の引数のほかに引数を受け取る方法を理解できませんでした。メソッド呼び出し後に複数の引数を受け取るdbus-cxx
IプロキシメソッドInitialize:
DBus::MethodProxy<int>& info_proxy = *(object->create_method<int>(ServerName, "Info"));
およびIは、戻り値を取得するとき、それはこの場合の三つの可能な出力の最初の値のみです。
方法を記述するXMLは次のようになります。QDBusViewer内からメソッドを呼び出す
<method name="Info">
<arg type="i" direction="out" name="rate"/>
<arg type="i" direction="out" name="freq"/>
<arg type="i" direction="out" name="nch"/>
</method>
は出力Arguments: 1813099, 44100, 2
を提供するので、それは3つの出力を提供しますが、私はこれらにアクセスする方法を見つけ出すことはできません。
EDIT:私はそれが私が代わりにDBus::MethodProxy
のDBus::CallMessage
を使用する方法の定義を得たツールのdbus-CXX-xml2cppを使用することにより、作業ました。結果の返信には、メソッドが返すすべての引数が含まれていました。
なぜコードジェネレータ( 'dbus-cxx-xml2cpp'ツール)を使ってXMLからクラスを生成しないのですか?しかし、あなたが手で行っているなら、私はそれに似たものがあると期待します: 'DBus :: MethodProxy' –
Velkan
私はツールの構築にいくつかの困難を経験したので、手作業で行うことにしました。 私は前に示唆したような機能を持っていましたが、プログラムを実行すると 'std :: shared_ptr 'のインスタンスを投げた後に呼び出されて終了し、問題を見つけることができません。 –
Dorni
ビルドが難しい場合は、OSに付属のdbusラッパーを使用することが理にかなっています。おそらく 'dbus-C++'(またはパッケージ化された 'dbus-cxx')です。ビルドエラーとは何ですか? 'DBu :: Error'例外のエラーは何ですか? – Velkan