Author Topic: Code::Blocks svn-trunk(9232) build error with wxWidgets-2.9.5 in toolsmanager.h  (Read 10292 times)

Offline zaleksf

  • Single posting newcomer
  • *
  • Posts: 8
The error shows up as:

-------------- Build: sdk in Code::Blocks wx2.9.x (compiler: GNU GCC Compiler)---------------

i686-w64-mingw32-g++.exe -Wall C:\CodeLib\CodeBlocks -pipe -mthreads -fmessage-length=0 -fexceptions -Winvalid-pch -ftrack-macro-expansion=0 -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DCB_PRECOMP -DWX_PRECOMP -DwxUSE_UNICODE -Woverloaded-virtual -DEXPORT_LIB -DEXPORT_EVENTS -DWXMAKINGDLL_SCI -iquote.objs29\include -I.objs29\include -I. -IC:\CodeLib\wxWidgets-2.9.x\include -IC:\CodeLib\wxWidgets-2.9.x\lib\gcc_dll\mswu -Isdk\wxscintilla\include -Iinclude\tinyxml -Iinclude -Iinclude\tinyxml -Iinclude\scripting\bindings -Iinclude\scripting\include -Iinclude\scripting\sqplus -Iinclude\mozilla_chardet -Iinclude\mozilla_chardet\mfbt -Iinclude\mozilla_chardet\nsprpub\pr\include -Iinclude\mozilla_chardet\xpcom -Iinclude\mozilla_chardet\xpcom\base -Iinclude\mozilla_chardet\xpcom\glue -c C:\CodeLib\CodeBlocks\src\include\sdk_precomp.h -o .objs29\include\sdk_precomp.h.gch
In file included from C:/CodeLib/CodeBlocks/src/include/cbauibook.h:10:0,
                 from C:/CodeLib/CodeBlocks/src/include/sdk_common.h:125,
                 from C:\CodeLib\CodeBlocks\src\include\sdk_precomp.h:13:
C:/CodeLib/wxWidgets-2.9.x/include/wx/aui/auibook.h:349:18: warning: 'virtual bool wxAuiNotebook::AddPage(wxWindow*, const wxString&, bool, int)' was hidden [-Woverloaded-virtual]
     virtual bool AddPage(wxWindow *page, const wxString &text, bool select,
                  ^
In file included from C:/CodeLib/CodeBlocks/src/include/sdk_common.h:125:0,
                 from C:\CodeLib\CodeBlocks\src\include\sdk_precomp.h:13:
C:/CodeLib/CodeBlocks/src/include/cbauibook.h:132:14: warning:   by 'bool cbAuiNotebook::AddPage(wxWindow*, const wxString&, bool, const wxBitmap&)' [-Woverloaded-virtual]
         bool AddPage(wxWindow* page,
              ^
In file included from C:/CodeLib/CodeBlocks/src/include/cbauibook.h:10:0,
                 from C:/CodeLib/CodeBlocks/src/include/sdk_common.h:125,
                 from C:\CodeLib\CodeBlocks\src\include\sdk_precomp.h:13:
C:/CodeLib/wxWidgets-2.9.x/include/wx/aui/auibook.h:352:18: warning: 'virtual bool wxAuiNotebook::InsertPage(size_t, wxWindow*, const wxString&, bool, int)' was hidden [-Woverloaded-virtual]
     virtual bool InsertPage(size_t index, wxWindow *page, const wxString &text,
                  ^
In file included from C:/CodeLib/CodeBlocks/src/include/sdk_common.h:125:0,
                 from C:\CodeLib\CodeBlocks\src\include\sdk_precomp.h:13:
C:/CodeLib/CodeBlocks/src/include/cbauibook.h:147:14: warning:   by 'bool cbAuiNotebook::InsertPage(size_t, wxWindow*, const wxString&, bool, const wxBitmap&)' [-Woverloaded-virtual]
         bool InsertPage(size_t page_idx,
              ^
In file included from C:/CodeLib/CodeBlocks/src/include/sdk_common.h:136:0,
                 from C:\CodeLib\CodeBlocks\src\include\sdk_precomp.h:13:
C:/CodeLib/CodeBlocks/src/include/toolsmanager.h:46:32: error: 'ToolsList::Node' has not been declared
   void DoRemoveTool(ToolsList::Node* node);



I'm using the mingw-4.8.1-win32-sjlj-rev2 (32-bit) compiler. I have successfully built wxWidgets-2.9.5+(trunk) with it with the following conditions:

WXVER_MINOR=9
WXVER_RELEASE=5
BUILD=release
MONOLITHIC=1
SHARED=1
UNICODE=1
TOOLKIT=MSW
TOOLKIT_VERSION=
WXUNIV=0
CFG=
VENDOR=custom
OFFICIAL_BUILD=0
DEBUG_FLAG=1
DEBUG_INFO=default
RUNTIME_LIBS=dynamic
MSLU=0
USE_EXCEPTIONS=1
USE_RTTI=1
USE_THREADS=1
USE_AUI=1
USE_GUI=1
USE_HTML=1
USE_MEDIA=1
USE_OPENGL=1
USE_QA=0
USE_PROPGRID=1
USE_RIBBON=1
USE_RICHTEXT=1
USE_STC=1
USE_WEBVIEW=1
USE_XRC=1
COMPILER=gcc
COMPILER_VERSION=
CC=gcc
CXX=g++
CFLAGS=
CPPFLAGS=
CXXFLAGS=
LDFLAGS=-s

I have seen other posts indicating that this may be related to wxSTL, but I did not build wx29 with STL enabled, and the setup_inc.h file indicates wxSTL = 0 (not enabled) also (by default).

I have been able to successfully build Code::Blocks with wxWidgets-2.8.12 using the same compiler, but I had hoped to use the "wx29" version. Any thoughts on how I may help troubleshoot this issue?

Offline stahta01

  • Lives here!
  • ****
  • Posts: 7340
    • My Best Post
I have seen other posts indicating that this may be related to wxSTL, but I did not build wx29 with STL enabled, and the setup_inc.h file indicates wxSTL = 0 (not enabled) also (by default).

What does "lib/gcc_dll/mswu/wx/setup.h" contain?

For the following options: I have stopped updating list for now.
WXWIN_COMPATIBILITY_2_8
wxUSE_STL
wxUSE_STD_CONTAINERS

Values from the wxWidgets 2.9.5 that I have just started building. Takes about 2 hours for me to build it. Re-started wxWidgets build at 10:30 PM ET because I was not building DLL version of wxWidgets.
Code
#define WXWIN_COMPATIBILITY_2_8 1
#define wxUSE_STL 0
#define wxUSE_STD_CONTAINERS 0


Possibly important differences in build.cfg; note, I do NOT think these are the problem.
Code
USE_QA=1
CXXFLAGS=-fno-keep-inline-dllexport
LDFLAGS=

Edit: I could NOT duplicate the problem.
I suggest making sure you built wxWidgets with the same compiler you are using to build Code::Blocks.

Edit: All testing done on Windows 7 SP1 32bit using MinGW gcc shipped with CB 12.11.

Tim S.
« Last Edit: July 28, 2013, 08:00:08 am by stahta01 »
C Programmer working to learn more about C++ and Git.
On Windows 7 64 bit and Windows 10 32 bit.
On Debian Stretch, compiling CB Trunk against wxWidgets 3.0.
--
When in doubt, read the CB WiKi FAQ. http://wiki.codeblocks.org

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9662
Building Code::Blocks with wxWidgets v2.9.5 as written in the WiKi forks work me just fine on Windows. Neither compile errors, nor runtime errors are pointing to toolsmanager.

The only difference I see is that you are using a newer compiler: mingw-4.8.1-win32-sjlj-rev2. I am still using TDM v4.7.1.
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline stahta01

  • Lives here!
  • ****
  • Posts: 7340
    • My Best Post
If I manually set wxUSE_STD_CONTAINERS to 1; I can duplicate the issue.
(This was without rebuilding wxWidgets after doing the manual edit)

I am of the opinion that setting wxWidget's wxUSE_STD_CONTAINERS or wxUSE_STL to 1 does NOT currently work with Code::Blocks.
Note: I have NOT tested setting wxUSE_STL under 2.9; but, I believe it caused this issue with 2.8.
The wxUSE_STL was split into multiple settings in 2.9; one of which is wxUSE_STD_CONTAINERS.

Updated my old STL patch to fix a small part of this issue. http://developer.berlios.de/patch/?func=detailpatch&patch_id=2161&group_id=5358

Tim S.
« Last Edit: July 30, 2013, 03:52:55 am by stahta01 »
C Programmer working to learn more about C++ and Git.
On Windows 7 64 bit and Windows 10 32 bit.
On Debian Stretch, compiling CB Trunk against wxWidgets 3.0.
--
When in doubt, read the CB WiKi FAQ. http://wiki.codeblocks.org

Offline stahta01

  • Lives here!
  • ****
  • Posts: 7340
    • My Best Post
Another patch related to this issue of using wxWidgets 2.9.5 and having wxUSE_STD_CONTAINERS = 1

Code
Index: src/sdk/scripting/bindings/sc_wxtypes.cpp
===================================================================
--- src/sdk/scripting/bindings/sc_wxtypes.cpp (revision 9239)
+++ src/sdk/scripting/bindings/sc_wxtypes.cpp (working copy)
@@ -247,16 +247,37 @@
         ///////////////////
         // wxArrayString //
         ///////////////////
+#if wxCHECK_VERSION(2, 9, 5)
+    #if wxUSE_STD_CONTAINERS
+        typedef void(wxArrayString::*WXAS_CLEAR)();
+        typedef size_t(wxArrayString::*WXAS_GETCOUNT)() const;
+        typedef wxString&(wxArrayString::*WXAS_ITEM)(size_t) const;
+    #else
+        typedef wxString&(wxArrayString::*WXAS_ITEM)(size_t);
+    #endif
+#endif
         SqPlus::SQClassDef<wxArrayString>("wxArrayString").
                 emptyCtor().
                 func(&wxArrayString::Add, "Add").
+#if wxCHECK_VERSION(2, 9, 5) && wxUSE_STD_CONTAINERS
+                func<WXAS_CLEAR>(&wxArrayString::Clear, "Clear").
+#else
                 func(&wxArrayString::Clear, "Clear").
+#endif
 //                func(&wxArrayString::Index, "Index").
                 staticFuncVarArgs(&wxArrayString_Index, "Index", "*").
+#if wxCHECK_VERSION(2, 9, 5) && wxUSE_STD_CONTAINERS
+                func<WXAS_GETCOUNT>(&wxArrayString::GetCount, "GetCount")
+#else
                 func(&wxArrayString::GetCount, "GetCount")
+#endif
+#if wxCHECK_VERSION(2, 9, 5)
+                .func<WXAS_ITEM>(&wxArrayString::Item, "Item")
+#else
                 #if !wxCHECK_VERSION(2, 9, 0) // Strange that this does not work with wx 2.9.x?!
                 .func(&wxArrayString::Item, "Item")
                 #endif
+#endif
                 ;
 
         //////////////

From docs/doxygen/overviews/container.h

Code
 - wxSortedArrayString and wxArrayString are separate classes now and the
   former doesn't derive from the latter. If you need to convert a sorted array
   to a normal one, you must copy all the elements. Alternatively, you may
   avoid the use of wxSortedArrayString by using a normal array and calling its
   Sort() method when needed.

See simpler patch below


Tim S.
« Last Edit: July 30, 2013, 12:05:57 pm by stahta01 »
C Programmer working to learn more about C++ and Git.
On Windows 7 64 bit and Windows 10 32 bit.
On Debian Stretch, compiling CB Trunk against wxWidgets 3.0.
--
When in doubt, read the CB WiKi FAQ. http://wiki.codeblocks.org

Offline oBFusCATed

  • Developer
  • Lives here!
  • *****
  • Posts: 13438
    • Travis build status
stahta01: Why don't you change the code to use wxArrayString in all versions of wx?
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Offline stahta01

  • Lives here!
  • ****
  • Posts: 7340
    • My Best Post
stahta01: Why don't you change the code to use wxArrayString in all versions of wx?

Do you mean in the abbreviations plug-in patch?

If you think that is better, I will change it.

FYI: I am suffering from insomnia right now; so, I might make mistakes on doing the change likely wait a day or two.
Compiling the Contrib Plug-ins right now.

Tim S.
« Last Edit: July 30, 2013, 10:27:10 am by stahta01 »
C Programmer working to learn more about C++ and Git.
On Windows 7 64 bit and Windows 10 32 bit.
On Debian Stretch, compiling CB Trunk against wxWidgets 3.0.
--
When in doubt, read the CB WiKi FAQ. http://wiki.codeblocks.org

Offline oBFusCATed

  • Developer
  • Lives here!
  • *****
  • Posts: 13438
    • Travis build status
Do you mean in the abbreviations plug-in patch?
Yes, there is no point in maintaining two versions, when one is sufficient.
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Offline stahta01

  • Lives here!
  • ****
  • Posts: 7340
    • My Best Post
Edit: Patch compiles; but, I have not done much testing because I have never used this plugin.

Code
Index: src/plugins/abbreviations/abbreviationsconfigpanel.cpp
===================================================================
--- src/plugins/abbreviations/abbreviationsconfigpanel.cpp (revision 9239)
+++ src/plugins/abbreviations/abbreviationsconfigpanel.cpp (working copy)
@@ -208,12 +208,14 @@
 {
     m_LanguageCmb->Clear();
 
-    wxSortedArrayString langs;
+    wxArrayString langs;
     AutoCompLanguageMap::iterator it;
     for (it = m_Plugin->m_AutoCompLanguageMap.begin(); it != m_Plugin->m_AutoCompLanguageMap.end(); ++it)
     {
         langs.Add(it->first);
     }
+    langs.Sort();
+
     m_LanguageCmb->Append(langs);
 }
 
@@ -265,7 +267,7 @@
     else
         colSet = new EditorColourSet();
 
-    wxSortedArrayString newLangs;
+    wxArrayString newLangs;
     wxArrayString langs = colSet->GetAllHighlightLanguages();
     for (unsigned int i = 0; i < langs.GetCount(); ++i)
     {
@@ -273,6 +275,7 @@
             !langs[i].IsSameAs(_T("Fortran77")))
             newLangs.Add(langs[i]);
     }
+    newLangs.Sort();
 
     int sel = wxGetSingleChoiceIndex(_("Select language:"), _("Languages"), newLangs, this);
     if (sel == -1)
« Last Edit: August 04, 2013, 02:08:20 am by stahta01 »
C Programmer working to learn more about C++ and Git.
On Windows 7 64 bit and Windows 10 32 bit.
On Debian Stretch, compiling CB Trunk against wxWidgets 3.0.
--
When in doubt, read the CB WiKi FAQ. http://wiki.codeblocks.org

Offline oBFusCATed

  • Developer
  • Lives here!
  • *****
  • Posts: 13438
    • Travis build status
And have you tried if the abbreviations still work with this change?
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Offline stahta01

  • Lives here!
  • ****
  • Posts: 7340
    • My Best Post
And have you tried if the abbreviations still work with this change?

No, I have not tested whether the plugin still works; did check to verify it compiles and links.

I was trying to get wxSmith Lib to compile; finally decided it is way beyond my knowledge of C++ to get it to compile.

Tim S.
« Last Edit: July 30, 2013, 02:30:42 pm by stahta01 »
C Programmer working to learn more about C++ and Git.
On Windows 7 64 bit and Windows 10 32 bit.
On Debian Stretch, compiling CB Trunk against wxWidgets 3.0.
--
When in doubt, read the CB WiKi FAQ. http://wiki.codeblocks.org