Wrap C обратный вызов через SWIG - PullRequest
1 голос
/ 11 января 2011

Я пытаюсь обернуть некоторые функции Gstreamer в PHP, используя SWIG, но я не могу понять, как обрабатывать обратные вызовы языка СиМогу ли я вызвать функцию PHP из C?Как вы будете обрабатывать обратный вызов, как показано ниже:

#include <gst/gst.h>

// ...

static gboolean my_callback(GstBus *bus, GstMessage *message, gpointer user_data) {
  g_print("Got %s message\n", GST_MESSAGE_TYPE_NAME(message));

  switch(GST_MESSAGE_TYPE(message)) {
    // ...
  }

  return TRUE;
}

main(gint argc, gchar *argv[])
{
  GstElement *pipeline;
  GstBus *bus;

  gst_init (&argc, &argv);

  pipeline = gst_pipeline_new ("my_pipeline");

  /* add handler */
  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); 
  gst_bus_add_watch (bus, my_bus_callback, NULL); // ------------<
  gst_object_unref (bus);

  // ...
}

1 Ответ

1 голос
/ 25 января 2011

Если вы загрузите последний источник swig (2.0.1), есть пример использования обратных вызовов с PHP. Он находится в каталоге swig-2.0.1 / examples / php / callback.

...