Just tried compiling on win 7 64bit with the 32 bit version of mingw. I have tried both versions of mingw 7.1 and mingw 8.1 and they both fail at the same place below:
i686-w64-mingw32-g++.exe -shared -Wl,--out-implib=..\..\..\devel31\libwxflatnotebook.a -Wl,--dll -LC:\Programming\wxWidgets\wxWidgets\lib\gcc_dll ..\..\..\.objs31\plugins\contrib\wxContribItems\wxFlatNotebook\wxFlatNotebook\src\wxFlatNotebook\fnb_customize_dlg.o ..\..\..\.objs31\plugins\contrib\wxContribItems\wxFlatNotebook\wxFlatNotebook\src\wxFlatNotebook\fnb_resources.o ..\..\..\.objs31\plugins\contrib\wxContribItems\wxFlatNotebook\wxFlatNotebook\src\wxFlatNotebook\popup_dlg.o ..\..\..\.objs31\plugins\contrib\wxContribItems\wxFlatNotebook\wxFlatNotebook\src\wxFlatNotebook\renderer.o ..\..\..\.objs31\plugins\contrib\wxContribItems\wxFlatNotebook\wxFlatNotebook\src\wxFlatNotebook\wxFlatNotebook.o ..\..\..\.objs31\plugins\contrib\wxContribItems\wxFlatNotebook\wxFlatNotebook\src\wxFlatNotebook\xh_fnb.o -o ..\..\..\devel31\wxflatnotebook.dll -Wl,--enable-auto-import -mthreads -lwxmsw31u
In file included from C:\Programming\wxWidgets\wxWidgets\include/wx/arrstr.h:16,
from C:\Programming\wxWidgets\wxWidgets\include/wx/filefn.h:15,
from C:\Programming\wxWidgets\wxWidgets\include/wx/utils.h:20,
from C:\Programming\wxWidgets\wxWidgets\include/wx/cursor.h:75,
from C:\Programming\wxWidgets\wxWidgets\include/wx/event.h:21,
from C:\Programming\wxWidgets\wxWidgets\include/wx/window.h:18,
from C:\Programming\wxWidgets\wxWidgets\include/wx/control.h:22,
from C:\Programming\wxWidgets\wxWidgets\include/wx/statline.h:23,
from wxFlatNotebook\include/wx/wxFlatNotebook/fnb_customize_dlg.h:14,
from C:\Programming\codeblocks\src\plugins\contrib\wxContribItems\wxFlatNotebook\src\wxFlatNotebook\fnb_customize_dlg.cpp:10:
wxFlatNotebook\include/wx/wxFlatNotebook/wxFlatNotebook.h:58:43: error: expected ')' before '*' token
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxWindow*, wxWindowPtrArray, WXDLLIMPEXP_FNB);
^
edit: Fixed typo in subject.
These are the changes mentioned by stahta01. The original macro definition was
#define WX_DECLARE_OBJARRAY_WITH_DECL(T, name, decl) \
typedef T _wxObjArray##name; \
_WX_DECLARE_OBJARRAY(_wxObjArray##name, name, wxArrayPtrVoid, decl)
and the current is
#define WX_DECLARE_OBJARRAY_WITH_DECL(T, name, classdecl) \
classdecl wxObjectArrayTraitsFor##name \
{ \
public: \
static T* Clone(const T& item); \
static void Free(T* p); \
}; \
typedef wxBaseObjectArray<T, wxObjectArrayTraitsFor##name> \
wxBaseObjectArrayFor##name; \
typedef int (wxCMPFUNC_CONV *CMPFUNC##T)(T **pItem1, T **pItem2); \
classdecl name : public wxBaseObjectArrayFor##name \
{ \
public: \
name() : wxBaseObjectArrayFor##name() { } \
name(const name& src) : wxBaseObjectArrayFor##name(src) { } \
}
but this comment in wxWidgets docs (see http://docs.wxwidgets.org/trunk/dynarray_8h.html#a015654ccb706038e60295cc202679be3 (http://docs.wxwidgets.org/trunk/dynarray_8h.html#a015654ccb706038e60295cc202679be3))
// note: not "MyClass *"!
suggests that
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxWindow*, wxWindowPtrArray, WXDLLIMPEXP_FNB);
is incorrect. The original macro definition was tolerant, but the new is not.