[ 23.3%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschoice.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxschoice.o
In file included from F:\code\wxWidgets-3.3.2\include/wx/arrstr.h:15,
from F:\code\wxWidgets-3.3.2\include/wx/ctrlsub.h:17,
from F:\code\wxWidgets-3.3.2\include/wx/listbox.h:21,
from F:\code\wxWidgets-3.3.2\include/wx/checklst.h:17,
from F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschecklistbox.cpp:24:
F:\code\wxWidgets-3.3.2\include/wx/dynarray.h: In instantiation of 'T& wxBaseArray<T, Sorter>::operator[](size_t) [with T = bool; Sorter = wxSortedArray_SortFunction<bool>; size_t = long long unsigned int]':
F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschecklistbox.cpp:72:35: required from here
72 | if ( ArrayChecks[i] )
| ^
F:\code\wxWidgets-3.3.2\include/wx/dynarray.h:128:36: error: cannot bind non-const lvalue reference of type 'bool&' to an rvalue of type 'bool'
128 | return base_vec::operator[](uiIndex);
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from D:/code/msys2/mingw64/include/c++/14.2.0/vector:67,
from F:\code\wxWidgets-3.3.2\include/wx/strvararg.h:34,
from F:\code\wxWidgets-3.3.2\include/wx/string.h:34,
from F:\code\wxWidgets-3.3.2\include/wx/arrstr.h:14:
D:/code/msys2/mingw64/include/c++/14.2.0/bits/stl_bvector.h:99:5: note: after user-defined conversion: 'std::_Bit_reference::operator bool() const'
99 | operator bool() const _GLIBCXX_NOEXCEPT
| ^~~~~~~~
Process terminated with status 1 (15 minute(s), 30 second(s))
Process terminated with status 0 (15 minute(s), 32 second(s))
1 error(s), 28 warning(s) (15 minute(s), 32 second(s))
I just tried, and I see the build failure as above.
I built the wx 3.3.2 library with the command:
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1
I just compare the 2 release:
https://github.com/wxWidgets/wxWidgets/compare/v3.3.1...v3.3.2
I see this that the only 2 functions were added in the file: include/wx/dynarray.h
T& operator[](size_t uiIndex)
{
wxASSERT( uiIndex < this->size() );
return base_vec::operator[](uiIndex);
}
const T& operator[](size_t uiIndex) const
{
wxASSERT( uiIndex < this->size() );
return base_vec::operator[](uiIndex);
}
Ollydbg, you can try changing (in wxsarraystringcheckproperty.cpp) line 28 to this
WX_DEFINE_ARRAY(bool, wxArrayBool);
wxSmith plays with offsets and code magic to access the array, this may be a headache.
Ollydbg, you can try changing (in wxsarraystringcheckproperty.cpp) line 28 to this
WX_DEFINE_ARRAY(bool, wxArrayBool);
wxSmith plays with offsets and code magic to access the array, this may be a headache.
Well, in the wxsarraystringcheckproperty.cpp file, it has:
#include "wxsarraystringcheckproperty.h"
#include "wxsarraystringcheckeditordlg.h"
#include <globals.h>
// Helper macros for fetching variables
#define VALUE wxsVARIABLE(Object,Offset,wxArrayString)
#define CHECK wxsVARIABLE(Object,CheckOffset,wxArrayBool)
Which part of the code do I need to change?
EDIT:
Oh, you mean in the header file.
Let me try it.
I just changed to this:
#ifndef WXSARRAYSTRINGCHECKPROPERTY_H
#define WXSARRAYSTRINGCHECKPROPERTY_H
#include "../../properties/wxsproperties.h"
WX_DEFINE_ARRAY(bool,wxArrayBool);
But I see still the same build error.
I am sorry for the confussion with the extension.
Can you change (in wxschecklistbox.cpp:72) this
if ( ArrayChecks[i] )
{
Codef( _T("%ACheck("));
}
Codef( _T("%AAppend(%t)"), ArrayChoices[i].wx_str());
if ( ArrayChecks[i] )
{
Codef(_T(")"));
}
to this
const bool Checked = ArrayChecks[i];
if ( Checked )
{
Codef( _T("%ACheck("));
}
Codef( _T("%AAppend(%t)"), ArrayChoices[i].wx_str());
if ( Checked )
{
Codef(_T(")"));
}
In line 102 there is another if (), it is expected to fail but the error in line 72 should be gone.
Still the same error:
-------------- Build: wxSmithLib in wxSmith Windows (compiler: GNU GCC Compiler)---------------
[ 0.6%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxssettings.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxssettings.o
[ 1.3%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxsanimationctrl.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxsanimationctrl.o
[ 1.9%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxsbitmapbutton.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxsbitmapbutton.o
[ 2.5%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxsbitmapcombobox.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxsbitmapcombobox.o
[ 3.2%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxsboxsizer.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxsboxsizer.o
[ 3.8%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxsbutton.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxsbutton.o
[ 4.4%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxscalendarctrl.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxscalendarctrl.o
[ 5.1%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxscheckbox.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxscheckbox.o
[ 5.7%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschecklistbox.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxschecklistbox.o
[ 6.3%] g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -D__WXMSW__ -D_WIN64 -DWXUSINGDLL -DcbDEBUG -DNOPCH -DBUILDING_PLUGIN -DwxUSE_UNICODE -std=gnu++11 -g -std=gnu++11 -IF:\code\wxWidgets-3.3.2\lib\gcc_dll\mswud -IF:\code\wxWidgets-3.3.2\include -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -I..\..\..\include\scripting\include -c F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschoice.cpp -o ..\..\..\.objs33_64\plugins\contrib\wxSmithLib\wxwidgets\defitems\wxschoice.o
In file included from F:\code\wxWidgets-3.3.2\include/wx/arrstr.h:15,
from F:\code\wxWidgets-3.3.2\include/wx/ctrlsub.h:17,
from F:\code\wxWidgets-3.3.2\include/wx/listbox.h:21,
from F:\code\wxWidgets-3.3.2\include/wx/checklst.h:17,
from F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschecklistbox.cpp:24:
F:\code\wxWidgets-3.3.2\include/wx/dynarray.h: In instantiation of 'T& wxBaseArray<T, Sorter>::operator[](size_t) [with T = bool; Sorter = wxSortedArray_SortFunction<bool>; size_t = long long unsigned int]':
F:\code\codeblocks-src\codeblocks_sfmirror\src\plugins\contrib\wxSmith\wxwidgets\defitems\wxschecklistbox.cpp:72:51: required from here
72 | const bool Checked = ArrayChecks[i];
| ^
F:\code\wxWidgets-3.3.2\include/wx/dynarray.h:128:36: error: cannot bind non-const lvalue reference of type 'bool&' to an rvalue of type 'bool'
128 | return base_vec::operator[](uiIndex);
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from D:/code/msys2/mingw64/include/c++/14.2.0/vector:67,
from F:\code\wxWidgets-3.3.2\include/wx/strvararg.h:34,
from F:\code\wxWidgets-3.3.2\include/wx/string.h:34,
from F:\code\wxWidgets-3.3.2\include/wx/arrstr.h:14:
D:/code/msys2/mingw64/include/c++/14.2.0/bits/stl_bvector.h:99:5: note: after user-defined conversion: 'std::_Bit_reference::operator bool() const'
99 | operator bool() const _GLIBCXX_NOEXCEPT
| ^~~~~~~~
Process terminated with status 1 (0 minute(s), 38 second(s))
Process terminated with status 0 (0 minute(s), 40 second(s))
1 error(s), 2 warning(s) (0 minute(s), 40 second(s))
Let me try this first:
WX_DEFINE_ARRAY_INT(unsigned char, wxArrayBool)
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/properties/wxsarraystringcheckproperty.h b/src/plugins/contrib/wxSmith/wxwidgets/properties/wxsarraystringcheckproperty.h
index ab0b632..d9846f1 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/properties/wxsarraystringcheckproperty.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/properties/wxsarraystringcheckproperty.h
@@ -25,7 +25,7 @@
#include "../../properties/wxsproperties.h"
-WX_DEFINE_ARRAY_INT(bool,wxArrayBool);
+WX_DEFINE_ARRAY_INT(unsigned char,wxArrayBool);
/** \brief Property for editing arrays of strings with checked option
*
This patch works OK now.
EDIT:
Now, I see the whole workspace is built OK now with wx 3.3.2. (note I do not build Fortran plugin nor the NassiShneiderman plugin)