virtual noexcept(true) errors: MinGW and gtkmm

virtual noexcept(true) errors: MinGW and gtkmm

本文关键字:MinGW and gtkmm errors noexcept true virtual      更新时间:2023-10-16

我已经奋斗了一个月,用MinGW在Windows上构建一个//工作//c++/gtkmm-3.0应用程序。我最终设法让库、MinGW和代码块在Windows XP (VirtualBox)上和睦相处。但是,当我尝试构建时,我得到以下错误:

这些是gtkmm-3.0的最新版本和依赖项。我通过MSYS2获得它们,尽管由于未知的原因,我无法在该环境中进行构建。因此,正如经常建议的那样,我将它们复制到MinGW /lib/include目录中,并确保pkg-config可以找到它们。一切都很好(据说)。

这些问题显然不是源自我的代码。我没有编写或修改gtkmm。然而,我不能让这些消失。

值得一提的是,我最后得到的错误是"不能找到glib::ustring::ustring",它决定停止抱怨,而是给我这些出乎意料的。如果以前的消息再次出现,我会把它们贴在这里。

我开始觉得在Windows上发布这个软件根本不值得。

注意:我有超过50个这样的,都在gtkmm-3.0和它的依赖库中,都来自main的第1行或第2行,并且都具有完全相同的细节。由于篇幅关系,我只展示几个。

-------------- Build: Debug in infiltrator (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -std=c++11 -Wall -mms-bitfields -pthread -IC:/dev/MinGW/include/glibmm-2.4 -IC:/dev/MinGW/lib/glibmm-2.4/include -IC:/dev/MinGW/include/sigc++-2.0 -IC:/dev/MinGW/lib/sigc++-2.0/include -IC:/dev/MinGW/include/glib-2.0 -IC:/dev/MinGW/lib/glib-2.0/include -IC:/dev/MinGW/include/gtkmm-3.0 -IC:/dev/MinGW/lib/gtkmm-3.0/include -IC:/dev/MinGW/include/atkmm-1.6 -IC:/dev/MinGW/include/giomm-2.4 -IC:/dev/MinGW/lib/giomm-2.4/include -IC:/dev/MinGW/include/pangomm-1.4 -IC:/dev/MinGW/lib/pangomm-1.4/include -IC:/dev/MinGW/include/gtk-3.0 -IC:/dev/MinGW/include/cairomm-1.0 -IC:/dev/MinGW/lib/cairomm-1.0/include -IC:/dev/MinGW/include/gdk-pixbuf-2.0 -IC:/dev/MinGW/include/gdkmm-3.0 -IC:/dev/MinGW/lib/gdkmm-3.0/include -IC:/dev/MinGW/include/atk-1.0 -IC:/dev/MinGW/include/pango-1.0 -IC:/dev/MinGW/include/cairo -IC:/dev/MinGW/include/pixman-1 -IC:/dev/MinGW/include -I/mingw32/include/freetype2 -I/mingw32/include/libpng16 -I/mingw32/include/harfbuzz -I/mingw32/include/glib-2.0 -I/mingw32/lib/glib-2.0/include -I/mingw32/include -IC:/dev/MinGW/include/freetype2 -IC:/dev/MinGW/include/libpng16 -IC:/dev/MinGW/include/harfbuzz -Wl,-luuid -LC:/dev/MinGW/lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -lwinmm -lz -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lglib-2.0 -lintl -std=c++11 -Wall -g -mms-bitfields -pthread -IC:/dev/MinGW/include/glibmm-2.4 -IC:/dev/MinGW/lib/glibmm-2.4/include -IC:/dev/MinGW/include/sigc++-2.0 -IC:/dev/MinGW/lib/sigc++-2.0/include -IC:/dev/MinGW/include/glib-2.0 -IC:/dev/MinGW/lib/glib-2.0/include -IC:/dev/MinGW/include/gtkmm-3.0 -IC:/dev/MinGW/lib/gtkmm-3.0/include -IC:/dev/MinGW/include/atkmm-1.6 -IC:/dev/MinGW/include/giomm-2.4 -IC:/dev/MinGW/lib/giomm-2.4/include -IC:/dev/MinGW/include/pangomm-1.4 -IC:/dev/MinGW/lib/pangomm-1.4/include -IC:/dev/MinGW/include/gtk-3.0 -IC:/dev/MinGW/include/cairomm-1.0 -IC:/dev/MinGW/lib/cairomm-1.0/include -IC:/dev/MinGW/include/gdk-pixbuf-2.0 -IC:/dev/MinGW/include/gdkmm-3.0 -IC:/dev/MinGW/lib/gdkmm-3.0/include -IC:/dev/MinGW/include/atk-1.0 -IC:/dev/MinGW/include/pango-1.0 -IC:/dev/MinGW/include/cairo -IC:/dev/MinGW/include/pixman-1 -IC:/dev/MinGW/include -I/mingw32/include/freetype2 -I/mingw32/include/libpng16 -I/mingw32/include/harfbuzz -I/mingw32/include/glib-2.0 -I/mingw32/lib/glib-2.0/include -I/mingw32/include -IC:/dev/MinGW/include/freetype2 -IC:/dev/MinGW/include/libpng16 -IC:/dev/MinGW/include/harfbuzz -Wl,-luuid -LC:/dev/MinGW/lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -lwinmm -lz -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lglib-2.0 -lintl -std=c++11 -mms-bitfields -pthread -IC:/dev/MinGW/include/glibmm-2.4 -IC:/dev/MinGW/lib/glibmm-2.4/include -IC:/dev/MinGW/include/sigc++-2.0 -IC:/dev/MinGW/lib/sigc++-2.0/include -IC:/dev/MinGW/include/glib-2.0 -IC:/dev/MinGW/lib/glib-2.0/include -IC:/dev/MinGW/include/gtkmm-3.0 -IC:/dev/MinGW/lib/gtkmm-3.0/include -IC:/dev/MinGW/include/atkmm-1.6 -IC:/dev/MinGW/include/giomm-2.4 -IC:/dev/MinGW/lib/giomm-2.4/include -IC:/dev/MinGW/include/pangomm-1.4 -IC:/dev/MinGW/lib/pangomm-1.4/include -IC:/dev/MinGW/include/gtk-3.0 -IC:/dev/MinGW/include/cairomm-1.0 -IC:/dev/MinGW/lib/cairomm-1.0/include -IC:/dev/MinGW/include/gdk-pixbuf-2.0 -IC:/dev/MinGW/include/gdkmm-3.0 -IC:/dev/MinGW/lib/gdkmm-3.0/include -IC:/dev/MinGW/include/atk-1.0 -IC:/dev/MinGW/include/pango-1.0 -IC:/dev/MinGW/include/cairo -IC:/dev/MinGW/include/pixman-1 -IC:/dev/MinGW/include -I/mingw32/include/freetype2 -I/mingw32/include/libpng16 -I/mingw32/include/harfbuzz -I/mingw32/include/glib-2.0 -I/mingw32/lib/glib-2.0/include -I/mingw32/include -IC:/dev/MinGW/include/freetype2 -IC:/dev/MinGW/include/libpng16 -IC:/dev/MinGW/include/harfbuzz -Iinclude -IC:devMinGWinclude -c "C:Documents and SettingsJasonDesktopinfiltratormain.cpp" -o objDebugmain.o
In file included from C:/dev/MinGW/include/pangomm-1.4/pangomm/fontset.h:33:0,
                 from C:/dev/MinGW/include/pangomm-1.4/pangomm/context.h:37,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/widget.h:32,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/actiongroup.h:29,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/application.h:32,
                 from C:Documents and SettingsJasonDesktopinfiltratormain.cpp:2:
C:/dev/MinGW/include/pangomm-1.4/pangomm/font.h:98:11: error: looser throw specifier for 'virtual Pango::Font::~Font()'
In file included from C:/dev/MinGW/include/glibmm-2.4/glibmm/binding.h:23:0,
                 from C:/dev/MinGW/include/glibmm-2.4/glibmm.h:96,
                 from C:Documents and SettingsJasonDesktopinfiltratormain.cpp:1:
C:/dev/MinGW/include/glibmm-2.4/glibmm/object.h:117:11: error:   overriding 'virtual Glib::Object::~Object() noexcept (true)'
In file included from C:/dev/MinGW/include/pangomm-1.4/pangomm/context.h:37:0,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/widget.h:32,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/actiongroup.h:29,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/application.h:32,
                 from C:Documents and SettingsJasonDesktopinfiltratormain.cpp:2:
C:/dev/MinGW/include/pangomm-1.4/pangomm/fontset.h:81:11: error: looser throw specifier for 'virtual Pango::Fontset::~Fontset()'
In file included from C:/dev/MinGW/include/glibmm-2.4/glibmm/binding.h:23:0,
                 from C:/dev/MinGW/include/glibmm-2.4/glibmm.h:96,
                 from C:Documents and SettingsJasonDesktopinfiltratormain.cpp:1:
C:/dev/MinGW/include/glibmm-2.4/glibmm/object.h:117:11: error:   overriding 'virtual Glib::Object::~Object() noexcept (true)'
In file included from C:/dev/MinGW/include/pangomm-1.4/pangomm/fontfamily.h:34:0,
                 from C:/dev/MinGW/include/pangomm-1.4/pangomm/fontmap.h:36,
                 from C:/dev/MinGW/include/pangomm-1.4/pangomm/context.h:38,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/widget.h:32,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/actiongroup.h:29,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/application.h:32,
                 from C:Documents and SettingsJasonDesktopinfiltratormain.cpp:2:
C:/dev/MinGW/include/pangomm-1.4/pangomm/fontface.h:81:11: error: looser throw specifier for 'virtual Pango::FontFace::~FontFace()'
In file included from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/widget.h:41:0,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/actiongroup.h:29,
                 from C:/dev/MinGW/include/gtkmm-3.0/gtkmm/application.h:32,
                 from C:Documents and SettingsJasonDesktopinfiltratormain.cpp:2:
C:/dev/MinGW/include/gtkmm-3.0/gtkmm/buildable.h:107:11: error: looser throw specifier for 'virtual Gtk::Buildable::~Buildable()'
Process terminated with status 1 (0 minute(s), 6 second(s))
50 error(s), 0 warning(s) (0 minute(s), 6 second(s))

除了gtkmm之外,这种类型的错误信息似乎会在其他稳定的、正在运行的项目和库中弹出。

我最好的猜测是我忘记了一些编译器标志、设置或其他构建过程中非常明显的步骤。我要赶紧提醒读者,我正在使用CodeBlocks(13.14),所以我没有自己编写构建命令。


<

请求信息/strong>mingw32-g++.exe --version

mingw32-g++.exe (tdm-1) 4.7.1

这是CodeBlocks 13.14附带的版本。

…我要赶紧提醒大家,我没有写gtkmm的任何方面或它的依赖,这是所有这些错误的起源。此外,这是一个完全稳定的版本,而不是测试版或开发快照。其次,这段完全相同的代码在我的Linux版本中使用了完全相同的库版本。

也就是说,这里是请求位置的完整代码行。

C:/dev/MinGW/include/glibmm-2.4/glibmm/object.h,第117行

virtual ~Object() noexcept; //It should only be deleted by the callback.

C:/dev/MinGW/include/pangomm-1.4/pangomm/font.h, 98行

virtual ~Font();

您的g++版本太旧了,不适合此代码:4.7。X的方法不成熟通过显式和隐含异常规范的协调在继承的成员函数之间,如本例中的虚Glib::ObjectPango::Font的析构函数

你需要至少升级到GCC 4.8.1 -它恰好是MinGW的最新稳定版本。你可以很好地跟上时代GCC从TDM的Windows端口。最新的有5.1

注:我有点怀疑你是否有真正同步的glibmm-2.4pangomm-1.4版本。我有我的linux发行版(Ubuntu 15.04)的官方源代码和我查询的样本问题声明的行号都与您的不同,它们都没有noexcept规范,这当然避免了这个障碍。