Strange initialization problem with Gtk::Main



Forgive me if this isn't the right place for asking questions about glibmm. I couldn't find a specific mailing list for it.

I have 2 x gtkmm applications, both written using MSVC. I should add that I have several years experience with MSVC, glib, gtk and glibmm/gtkmm.

Pretty much the very first thing that both apps do is to create a Gtk::Main object. However, the smaller app just creates a local (stack based) object as the first thing in main(). The larger app allocates a Gtk::Main object using 'new()'. Both methods result in a call to 'Gtk::Main:init()' which, in turn, results in a call to 'Gtk::Main::init_gtkmm_internals()'. Both functions can be found in 'gtk/gtkmm/main.cc'. 'init_gtkmm_internals' then calls 'Gio::init()'' which then calls 'Gio::wrap_init()' (which is in 'glibmm/gio/giomm/wrap_init.cc'). So far, so good.

AFAICT the execution path is absolutely identical for both programs. The same functions get called in the same order with no apparent problems - BUT - at line 456 of 'gio/giomm/wrap_init.cc' there's a comment which says:-

      // Register the gtkmm types

That comment is followed by around 100 calls to "whatever::get_type()". In the small app, every call succeeds. In the larger app, every call fails and I'm totally baffled as to why. One possible explanation is that for simplicity, I built gtkmm and glibmm as static libs, rather than DLLs. At the time I remember getting told that to build as Windows DLLs I needed a utility called "gendef" but there was some doubt about how diligently it was being kept up-to-date, so a static library build seemed simpler - but now I'm not so sure....

In the smaller app it makes no difference as everything is contained in the main exe. But the larger app uses some DLLs. Some of those DLLs (and the main app itself) need to link to glibmm and gtkmm so of course, each will have its own copy of glibmm and gtkmm, rather than them being shared objects. Could that be causing a problem like this??

John


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]