septembre
2012
suite à ce précédent post, (inspiré de l’espace de nom en c#) je propose d’aller plus loin.
pour compiler sous forme de bibliothèque, il faut faire ceci sur votre fichier vala dans un terminal :
test_shared étant à remplacer par le nom de votre fichier on appelera la bibliothèque libgstreamer-plugins-base-0.10.so .
valac va vous générer une vapi de votre bibliothèque, que vous placerez dans le dossier des vapis (normalement /usr/share/vala/vapi/).
Ceci fait, il faut placer le fichier d’en-tête dans le dossier « /usr/include » et la bibliothèque dans « /usr/lib ». Puis ensuite lier la bibliothèque avec ld
pour tester, je propose ce petit programme :
using Gst.BasePlugins;
public class mainclass : GLib.Object
{
static MainLoop loop;
public static void main (string[] args)
{
loop = new MainLoop();
Gst.init(ref args);
PlayBin2 playbin2 = new PlayBin2();
playbin2.Bus.add_watch(cb,0);
playbin2.Uri = "file://"+args[1];
playbin2.AboutToFinish(quit);
playbin2.SetState(Gst.State.PLAYING);
loop.run ();
}
static void quit(){loop.quit();}
static bool cb(Gst.Bus bus, Gst.Message message){return true;}
}
Notez que les fonctions de signaux (ici AboutToFinish) diffèrent de C#. En vala, on ne peut appliquer l’opérateur += sur ces fonctions
on compile le programme de cette manière :
si le fichier .h n’est pas dans le dossier include. vous devrez rajouter une option de compilation avant -o : « -X -I/dossier/du/fichier » , -I pour include
voilà, votre première bibliothèque est fonctionnelle !
[…] les instructions d’installation sont disponibles ici : compilation de la bibliothèque […]