Re: compiling gtkmm with atkmm support fails in implementor.cc



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


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