Thank you very much, Aaron There's only a thing to change, in the connect_port delegate DataLocation is a pointer to a float not a float, but changing to "Data?" solved.
2016-09-13 14:19 GMT-03:00 Aaron Andersen <[email protected]>: > Hello Victor, > > You have chosen one of the more difficult C libraries to bind to Vala. The > way this library is setup so contrary to the GObject way of doing things it > is certainly an edge case. > > Unfortunately this library requires a small C header "helper" file to > accompany your vapi. The main reason for this is that Vala doesn't deal with > unnamed function pointers. > > I've gone ahead and created ladspa.vapi, ladspa-vala.h (a C header "helper" > file to make Vala work with the ladspa library), and main.vala (a test > program I used to ensure the vapi was correct). > > main.vala - http://pastebin.com/VF9AXrLY > ladspa.vapi - http://pastebin.com/WeaKPHnc > ladspa-vala.h - http://pastebin.com/GB4kPzw1 > > I placed all of these 3 files into a single directory and then ran this > command to compile: > > valac --pkg ladspa --vapidir . main.vala --save-temps -X -L/usr/lib/ladspa/ > -X -l:amp.so -X -I. > > and this command to run the program: > > LD_LIBRARY_PATH=/usr/lib/ladspa/ ./main > > From reading the documentation I understand that the ladspa framework > intends for the user to dynamically load plugins via dlopen but I hope you > get the idea from the example. > > Please don't hesitate to ask any questions about this code. > > Thank you, > Aaron > > Quoting Al Thomas <[email protected]>: > >>> ----- Original Message ----- >>> From: Victor Aurélio Santos <[email protected]> >>> Sent: Tuesday, 13 September 2016, 15:55 >>> Subject: Re: [Vala] LADSPA bindings >> >> >>> Now... >> >> >>> [CCode (cname = "connect_port", has_target = false)] >>> public delegate void DescriptorConnectPort(Handle? instance, ulong >>> port, ref double dataLocation); >> >> >>> results in: >>> src/CompressorBackend.c: In function ‘ajami_compressor_backend_connect’: >>> src/CompressorBackend.c:674:2: error: unknown type name ‘connect_port’ >>> connect_port _tmp2_ = NULL; >> >> >> >> I presume there's no typedef for it then. Instead try: >> >> [CCode (lower_case_cprefix = "", has_target = false)] >> public delegate void ConnectPort(Handle? instance, ulong >> port, ref double dataLocation); >> >> The lower_case_cprefix should remove the default namespace prefix >> and then ConnectPort will be converted to connect_port in C. >> >> That's my interpretation of the last paragraph of: >> https://wiki.gnome.org/Projects/Vala/LegacyBindings#Delegates >> >> If that doesn't work, I'm not sure what else to suggest. The paragraph >> could >> mean include an empty cname, e.g. >> >> >> [CCode (cname = "", has_target = false)] >> public delegate void DescriptorConnectPort(Handle? instance, ulong >> port, ref double dataLocation); >> >> >> Use the --ccode switch with valac to get the C code produced. Look at the >> code and tweak it until it works then work back to the VAPI. You can use >> valac to compile C. Just use valac --pkg xyz my_c_file.c >> _______________________________________________ >> vala-list mailing list >> [email protected] >> https://mail.gnome.org/mailman/listinfo/vala-list > > > > -- Victor Aurélio Santos _______________________________________________ vala-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/vala-list
