4

我正在使用 gstreamer-1.0 构建音乐播放器。我正在使用 sqlite3 来存储 mp3 文件的元数据。我想使用 dbus 进行 gstreamer 和数据库之间的通信。这基本上是为了将音乐播放器的 UI 和框架分开隔离。这样做时,我想检索已经存储在数据库中的元数据。我通过一个结构返回它。问题是,如何编写通过函数返回结构的 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”:Can't put element here make: *** [value-server-stub.h] 错误 1

请帮我。

4

1 回答 1

0

返回struct string_vars作为 out 参数的签名如下

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

我删除了额外的"i"

现在遇到您的问题,看起来您的构建系统已配置为从名为“value-dbus-music.xml”的 dbus 自省文件自动生成服务器端存根。
配置构建系统以查找正确的 XML 文件。

于 2013-07-14T23:37:00.023 回答