Как передать / вернуть структуру из dbus с использованием программирования на C?

Я создаю музыкальный проигрыватель, используя gstreamer-1.0. Я использую sqlite3 для хранения метаданных mp3-файлов. И я хотел бы использовать dbus для связи между gstreamer и базой данных. Это в основном, чтобы изолировать пользовательский интерфейс и структуру музыкального плеера отдельно. При этом я хотел бы получить метаданные, которые уже были сохранены в базе данных. Я возвращаю это через структуру. Вопрос в том, как мне написать XML-файл для возврата структуры через функцию. Моя структура и функции, как показано ниже.

struct string_vars{
std::string title;
std::string album;
std::string artist;
std::string genre;
volatile long int real_time;
volatile long int current_time;
};

struct string_vars Gstreamer_class::req_meta_data(char *song_path
{
start_playbin_for_database(song_path);
return label_data;
}

Я пытался так:

<method name="req_meta_data">
<arg type="s" name="song_path" direction="in">
<arg type="(issssxx)" name="label_data" direction="out">
</method>

Я думаю, это неправильно. Это бросило мне ошибку: —

Невозможно загрузить «value-dbus-music.xml»: не могу поместить элемент здесь
make: *** [value-server-stub.h] Ошибка 1

Пожалуйста, помогите мне.

3

Решение

Подпись вернуть struct string_vars как выходной параметр будет следующим

<method name="req_meta_data">
<arg type="s" name="song_path" direction="in">
<arg type="(ssssxx)" name="label_data" direction="out">
</method>

Я убрал дополнительный «я».

Теперь, перейдя к вашей проблеме, похоже, что ваша система сборки настроена на автоматическое создание заглушек на стороне сервера из файла самоанализа dbus с именем «value-dbus-music.xml».
Настройте систему сборки для поиска правильного файла XML.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector