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



To John and codekiddy: There are previous discussions on gtkmm-list about strange problems with gtkmm and MSVC. Don't know how relevant these links are:


Hi, thanks a lot for providing these links, reading right now, the /vd2 flag is what I will consider soon, recompile libraries and do some experiments.

Too bad I can't debug the code and figure out things in such big codebase where I have no experience.
Hopefully some of these suggestions will turn out positive results.

For now I can live without atkmm support in my projects (as for me), but it's so sad this can't be solved the easy way and make gtkmm and other libs fully compatible for MSVC compilers.


On Thu, Nov 19, 2015 at 3:35 PM, Kjell Ahlstedt <kjell ahlstedt bredband net> wrote:
Den 2015-11-18 kl. 22:51, skrev John Emmas:
On 18 Nov 2015, at 19:24, Kjell Ahlstedt wrote:

I don't understand what's the difference between
  Implementor::~Implementor() noexcept { }
and a compiler-generated destructor.

No.  In fact, I just tried commenting out the ~Implementor() d'tor (and letting the compiler generate one) but it didn't make any difference.
It made a difference to codekiddy. You two see similar but not identical problems, I suppose.
I came to think of a difference between the original ~Implementor() and a compiler-generated one. The compiler-generated destructor is probably inlined. It can be executed without a call to the atkmm DLL. I don't know if that's important.
I can't find it now but 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.
https://mail.gnome.org/archives/gtkmm-list/2015-November/msg00025.html
I'm busy for a couple of days now - but at the weekend I'll try rebuilding everything, making absolutely sure that GTKMM_ATKMM_ENABLED is #defined in all modules.  Fingers crossed, that might solve the problem!

John

To codekiddy: You should not worry about Glib::Object::~Object() being protected. Atk::Implementor::~Implementor() does not try to call it. If it did, it would be detected at compile-time.

To John and codekiddy: There are previous discussions on gtkmm-list about strange problems with gtkmm and MSVC. Don't know how relevant these links are:

https://mail.gnome.org/archives/gtkmm-list/2013-December/msg00002.html
https://bugzilla.gnome.org/show_bug.cgi?id=719847
https://mail.gnome.org/archives/gtkmm-list/2014-September/msg00024.html

Kjell




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