Hi,

I got a problem when using GModule before. It has been fixed by using
'g_type_init()' but I don't know what 'g_type_init()' does exactly.

My situation was as follows:
My application uses GModule to load shared library, which depends on
libsoup, and unload it.  There is no problem up to now. But
"GLib-GObject-WARNING **: cannot register existing type `SoupSession'...."
error message occurred when trying to reload the library. My application
already called 'g_type_init()' in main() function at startup.
'g_type_register_static()' is used in libsoup.  I think that lisoup trying
to re register it's type (SoupSession) when closing&reloading the
library even though it has been already registered.
I have found that dlopen&dlclose should be avoided in this case when
googling.

However, above problem was solved simply by adding 'g_type_init()'  in the
source code of shared library. Whenever reloading the library,
'g_type_init()'  will be called again and again.
This is right way to solve the problem??? What dose 'g_type_init()' do when
it is called again? Does it remap the memory of all GType or remap only
'SoupSesion'? Can anyone explain this in detail??
_______________________________________________
gnome-devel-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-devel-list

Reply via email to