Strange initialization problem with Gtk::Main
- From: John Emmas <johne53 tiscali co uk>
- To: gtkmm <gtkmm-list gnome org>
- Subject: Strange initialization problem with Gtk::Main
- Date: Mon, 28 Oct 2013 18:42:51 +0000
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]