On 18/11/2015 21:51, John Emmas wrote:
earlier today someone mentioned that if GTKMM_ATKMM_ENABLED is #defined when
building the Gtkmm DLL, it must also get #defined in anything which uses that
DLL. That makes a lot of sense - because otherwise, certain objects (e.g.
class Widget) will have different sizes in different modules. To me, that
sounds like a promising explanation for this 'delete' problem.
[...]
I'll try rebuilding everything, making absolutely sure that GTKMM_ATKMM_ENABLED
is #defined in all modules. Fingers crossed, that might solve the problem!
Hi Kjell. I just found some time to try the above strategy and guess
what... that fixed it !!
codekiddy - the secret to making this work is that every module which
uses gtkmm MUST know the status of GTKMM_ATKMM_ENABLED. In theory,
gtkmmconfig.h should achieve this - but to be absolutely certain (for
testing purposes) I made use of MSVC's /FI option (ForceInclude). I
used it to force include a specific header file in which I'd #defined
GTKMM_ATKMM_ENABLED. This guarantees that _every_ compiled source file
will know about that #define. Simply making the change in gtkmmconfig.h
should achieve the same thing but it looks like that isn't quite working
properly.
In fact, I know it isn't working properly - because after I used the /FI
option, everything which previously linked to gtkmm now also needed to
get linked to atkmm.
So the problem is that something somewhere needs to be #including
gtkmmconfig.h but is failing to do so. My guess would be
'gtkmm/window.cc' (maybe??) Perhaps even anything that references a
Widget? If it forgets to #include widget.h the wrong size might be
assumed for 'Widget'. Admittedly I'm guessing here - but it does seem
like there's an important #include missing somewhere :-(
John
_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list