I compiled now with gmodule-export-2.0.pc the symbols get exported:

nm -g build/src/ajami | grep '_get_type'
[...]
0000000000429b30 T hv_meter_get_type

but when I try to launch I get the same error:
(ajami:30289): Gtk-CRITICAL **: Error building template class
'AjamiMainWindow' for an instance of type 'AjamiMainWindow': Invalid
object type 'HVMeter' on line 2

Thanks ;)

2015-10-04 6:56 GMT-03:00 Tristan Van Berkom <tris...@upstairslabs.com>:
> On Sat, Oct 3, 2015 at 10:14 AM, Victor Aurélio Santos
> <victoraur.san...@gmail.com> wrote:
>>
>> How can I do that ?
>> Just build all together results in this warning:
>>
>>>  (ajami:3475): Gtk-CRITICAL **: Error building template class
>>> 'AjamiMainWindow' for an instance of type 'AjamiMainWindow': Invalid object
>>> type 'HVMeter' on line 2
>>
>>
>> I've asked on SO[1] and got only one answer.
>>
>> I stick at "_get_type" workaround/hack but I didn't like it and I
>> can't do the same thing in Vala (I've not found how to do the same
>> thing).
>
>
>
> Hello Victor,
>
> The regular way to do this is in fact to compile your app with
> gmodule-export-2.0.pc
>
> I.e. adding `pkg-config --libs gmodule-export-2.0` to your link stage (using
> autotools you
> would just add gmodule-export-2.0 to your regular pkg-config m4 macro
> invocations).
>
> This indeed makes your applications global symbols visible so that they can
> be found using dlsym() on unices and other methods on other platforms.
>
> Regarding the comment on the SO post, the deriving of the _get_type()
> function by the type name is not considered a heuristic but rather it is a
> standard, which is at least enforced in any code written in the last decade
> or so by way of the G_DEFINE_TYPE() macros (vala generated types will also
> comply with this standard). So, if you have a type which is named FooBar,
> and it's low level GType accessor is not correctly named foo_bar_get_type(),
> it is in fact the application/library code declaring the type which is at
> fault for not complying with this.
>
> Granted, one can argument that documentation in this area is weak. Any other
> methods provided in GtkBuilder (such as overridable get_type_from_name()
> virtual methods) are specifically targeted at language bindings which need
> to resolve the type in other ways.
>
> With all that said, it could be plausible to create some tooling perhaps
> which parses your builder files at compile time, perhaps generating a
> resource to be compiled into your app which could be automatically inspected
> at gtk_init() time, to automate the process of initializing the required
> types - and removing the requirement of exporting your symbols in the
> regular way - that's one approach I can imagine anyway, perhaps there are
> others, there would have to be interest and someone would of course have to
> write that code :)
>
> I hope this clarifies the situation a bit more for you.
>
> Best,
>    -Tristan
>
>
>



-- 
Victor Aurélio Santos
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to