📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 155行目: | 155行目: | ||
std::stringクラスの参照渡しは明示的に行っていないが、これは、sdbus-c++ライブラリが内部で適切に処理するためである。<br> | std::stringクラスの参照渡しは明示的に行っていないが、これは、sdbus-c++ライブラリが内部で適切に処理するためである。<br> | ||
<u>sdbus-c++ライブラリは効率的な引数の受け渡しを行うよう設計されているため、大きなオブジェクトは自動的に参照として扱われる。</u><br> | <u>sdbus-c++ライブラリは効率的な引数の受け渡しを行うよう設計されているため、大きなオブジェクトは自動的に参照として扱われる。</u><br> | ||
<br> | |||
<u>まず、上記のDBusインターフェース定義ファイルからC++コードを生成する。</u><br> | |||
sdbus-c++ライブラリには、XMLファイルからC++のソースコードを生成するツールが付属している。 (sdbus-c++-xml2cppファイル)<br> | |||
sdbus-c++-xml2cppで生成されたソースコードを使用することにより、型安全性が向上して、D-Busインターフェースの使用がより簡単になる。<br> | |||
<br> | |||
以下に示すコマンドを実行して、<クライアント側のソースコード>と<サーバ側のソースコード) を生成する。<br> | |||
sdbus-c++-xml2cpp <D-Busインターフェース定義ファイル名 (XMLファイル)> \ | |||
--proxy=<D-Busインターフェース定義ファイルが記述されたクライアント側のソースコードファイル名 (プロキシヘッダ)> \ | |||
--adaptor=<D-Busインターフェース定義ファイルが記述されたサーバ側のソースコードファイル名> | |||
# 例 : | |||
sdbus-c++-xml2cpp org.example.mochiu.xml \ | |||
--proxy=mochiu_proxy.h \ | |||
--adaptor=mochiu_adaptor.h | |||
<br> | |||
<u>次に、生成されたソースコードをプロジェクトに統合する。</u> | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
#include <sdbus-c++/sdbus-c++.h> | #include <sdbus-c++/sdbus-c++.h> | ||
#include <iostream> | #include <iostream> | ||
#include <cstring> | #include <cstring> | ||
#include "mochiu_proxy.h" // 生成されたプロキシヘッダをインクルード | |||
int main() | int main() | ||
| 198行目: | 215行目: | ||
return 0; | return 0; | ||
} | } | ||
</syntaxhighlight> | |||
<br> | |||
* CMakeを使用する場合 | |||
<syntaxhighlight lang="cmake"> | |||
cmake_minimum_required(VERSION 3.16) | |||
project(<プロジェクト名>) | |||
set(CMAKE_CXX_STANDARD 17) | |||
find_package(sdbus-c++ REQUIRED) | |||
add_executable(<ターゲット名> | |||
main.cpp | |||
) | |||
target_link_libraries(<ターゲット名> PRIVATE | |||
SDBusCpp::sdbus-c++ | |||
) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||