Menu

#182 2.1.1 doesn't compile with wx 3.0.0: api_string.cpp

v2.1.1
closed
nobody
None
1
2014-03-23
2014-03-08
No

...

/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -fPIC -Wall wx-config-3.0 --unicode=yes --cxxflags -D_SAGA_LINUX -D_SAGA_UNICODE -D_TYPEDEF_BYTE -D_TYPEDEF_WORD -D_SAGA_API_EXPORTS -D_SAGA_PYTHON -fopenmp -I/usr/include/polyclipping -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -c -o api_string.lo api_string.cpp

...

api_string.cpp: In member function 'bool CSG_String::asInt(int&) const':
api_string.cpp:731:34: error: 'wxStrtol' was not declared in this scope
Value = wxStrtol(start, &end, 10);
^
api_string.cpp: In member function 'bool CSG_String::asDouble(double&) const':
api_string.cpp:751:30: error: 'wxStrtod' was not declared in this scope
Value = wxStrtod(start, &end);
^
api_string.cpp: In function 'int SG_Printf(const wchar_t, ...)':
api_string.cpp:879:37: error: 'wxVprintf' was not declared in this scope
int ret = wxVprintf(Format, argptr);
^
api_string.cpp: In function 'int SG_FPrintf(FILE
, const wchar_t, ...)':
api_string.cpp:893:46: error: 'wxVfprintf' was not declared in this scope
int ret = wxVfprintf(stream, Format, argptr);
^
api_string.cpp: In static member function 'static CSG_String CSG_String::Format(const wchar_t
, ...)':
api_string.cpp:289:27: warning: second parameter of 'va_start' not last named argument [-Wvarargs]
va_start(argptr, sFormat);
^
api_string.cpp: In member function 'int CSG_String::Printf(const wchar_t*, ...)':
api_string.cpp:315:27: warning: second parameter of 'va_start' not last named argument [-Wvarargs]
va_start(argptr, sFormat);
^
While the missing declarations can be tackled by including xlocale.h, the latter two remain.

I think you should update the milestones to pick from on this tracker.

Discussion

  • Volker Wichmann

    Volker Wichmann - 2014-03-09
    • Group: v2.1.0 --> v2.1.1
     
  • Volker Wichmann

    Volker Wichmann - 2014-03-09

    Hm, I don't have an idea what causes these errors. These functions haven't changed since a long time and I can compile 2.1.1 (trunk) without problems with wxWidgets 3.0.0.

     
  • Volker Fröhlich

    I think I found the reason for at least the first half of the problem: The Fedora build uses --disable-compat28. Whether that is for a reason or not I'd have to ask.

    Looking inside string.h:

    4300 #if WXWIN_COMPATIBILITY_2_8
    4301 // lot of code out there doesn't explicitly include wx/crt.h, but uses
    4302 // CRT wrappers that are now declared in wx/wxcrt.h and wx/wxcrtvararg.h,
    4303 // so let's include this header now that wxString is defined and it's safe
    4304 // to do it:
    4305 #include "wx/crt.h"
    4306 #endif

    crt.h includes wxcrtvararg.h and that's where wxVprintf() is defined.

     
  • Volker Fröhlich

    ... and the second issue too. I'll try to find out the rationale behind disabling compatibility.

     
  • Volker Fröhlich

    Fedora's wxGTK3 now has the compatibility mode enabled, thus the issue is solved for me.

     
  • Volker Wichmann

    Volker Wichmann - 2014-03-23
    • status: open --> closed
     
  • Volker Wichmann

    Volker Wichmann - 2014-03-23

    Ok, thanks for reporting - I'll close the bug, but we should keep in mind to get rid of the depreciated methods in the near future.

     

Anonymous
Anonymous

Add attachments
Cancel