wxWidgets-3.0.3 unter CygWin bauen



  • Hallo zusammen,

    zur Zeit versuche ich wxWidgets-3.0.3 unter Cygwin64 zu bauen, leider erfolglos. Configure geht problemlos, beim eigentlichen Build (make) gibt es dann Probleme.

    $ ../configure --with-msw --disable-debug --disable-shared --enable-stl --disable-xlocale
    

    Beim File ../src/msw/volume.cpp kommen diverse Fehler:

    /cygdrive/c/opt/wxWidgets-3.0.3/build-release/bk-deps g++ -c -o baselib_volume.o  -D__WXMSW__      -DWXBUILDING -I/cygdrive/c/opt/wxWidgets-3.0.3/build-release/src/tiff/libtiff -I../src/tiff/libtiff -I../src/jpeg -I../src/png  -I../src/regex  -DwxUSE_GUI=0 -DwxUSE_BASE=1 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -D_FILE_OFFSET_BITS=64 -DwxDEBUG_LEVEL=0 -I/cygdrive/c/opt/wxWidgets-3.0.3/build-release/lib/wx/include/msw-unicode-static-3.0 -I../include -O2 -fno-strict-aliasing  ../src/msw/volume.cpp
    ../src/msw/volume.cpp: In statischer Elementfunktion »static wxArrayString wxFSVolumeBase::GetVolumes(int, int)«:
    ../src/msw/volume.cpp:398:49: Fehler: keine passende Funktion für Aufruf von »_InterlockedExchange(long int*, int)«
         ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
                                                     ^
    In file included from /usr/include/w32api/windows.h:70:0,
                     from ../include/wx/msw/wrapwin.h:65,
                     from ../src/msw/volume.cpp:45:
    /usr/include/w32api/winbase.h:2973:29: Anmerkung: candidate: long unsigned int _InterlockedExchange(volatile long unsigned int*, long unsigned int) <nahe Übereinstimmung>
       FORCEINLINE unsigned long InterlockedExchange (unsigned long volatile *Target, unsigned long Value) {
                                 ^
    

    Hat jemand eine Idee?

    Vielen Dank,
    M.



  • Hier nochml die komplette Fehlermeldung:

    /cygdrive/c/opt/wxWidgets-3.0.3/build-release/bk-deps g++ -c -o baselib_volume.o  -D__WXMSW__      -DWXBUILDING -I/cygdrive/c/opt/wxWidgets-3.0.3/build-release/src/tiff/libtiff -I../src/tiff/libtiff -I../src/jpeg -I../src/png  -I../src/regex  -DwxUSE_GUI=0 -DwxUSE_BASE=1 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -D_FILE_OFFSET_BITS=64 -DwxDEBUG_LEVEL=0 -I/cygdrive/c/opt/wxWidgets-3.0.3/build-release/lib/wx/include/msw-unicode-static-3.0 -I../include -O2 -fno-strict-aliasing  ../src/msw/volume.cpp
    ../src/msw/volume.cpp: In statischer Elementfunktion »static wxArrayString wxFSVolumeBase::GetVolumes(int, int)«:
    ../src/msw/volume.cpp:398:49: Fehler: keine passende Funktion für Aufruf von »_InterlockedExchange(long int*, int)«
         ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
                                                     ^
    In file included from /usr/include/w32api/windows.h:70:0,
                     from ../include/wx/msw/wrapwin.h:65,
                     from ../src/msw/volume.cpp:45:
    /usr/include/w32api/winbase.h:2973:29: Anmerkung: candidate: long unsigned int _InterlockedExchange(volatile long unsigned int*, long unsigned int) <nahe Übereinstimmung>
       FORCEINLINE unsigned long InterlockedExchange (unsigned long volatile *Target, unsigned long Value) {
                                 ^
    /usr/include/w32api/winbase.h:2973:29: Anmerkung:   Umwandlung von Argument 1 wäre unzulässig:
    ../src/msw/volume.cpp:398:27: Fehler: ungültige Umwandlung von »long int*« in »volatile long unsigned int*« [-fpermissive]
         ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
                               ^~~~~~~~~~~~~~~
    In file included from /usr/include/w32api/windows.h:70:0,
                     from ../include/wx/msw/wrapwin.h:65,
                     from ../src/msw/volume.cpp:45:
    /usr/include/w32api/winbase.h:2982:32: Anmerkung: candidate: long long unsigned int _InterlockedExchange(volatile long long unsigned int*, long long unsigned int) <nahe Übereinstimmung>
       FORCEINLINE unsigned __int64 InterlockedExchange (unsigned __int64 volatile *Target, unsigned __int64 Value) {
                                    ^
    /usr/include/w32api/winbase.h:2982:32: Anmerkung:   Umwandlung von Argument 1 wäre unzulässig:
    ../src/msw/volume.cpp:398:27: Fehler: ungültige Umwandlung von »long int*« in »volatile long long unsigned int*« [-fpermissive]
         ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
                               ^~~~~~~~~~~~~~~
    ../src/msw/volume.cpp: In statischer Elementfunktion »static void wxFSVolumeBase::CancelSearch()«:
    ../src/msw/volume.cpp:469:48: Fehler: keine passende Funktion für Aufruf von »_InterlockedExchange(long int*, int)«
         ::InterlockedExchange(&s_cancelSearch, TRUE);
                                                    ^
    In file included from /usr/include/w32api/windows.h:70:0,
                     from ../include/wx/msw/wrapwin.h:65,
                     from ../src/msw/volume.cpp:45:
    /usr/include/w32api/winbase.h:2973:29: Anmerkung: candidate: long unsigned int _InterlockedExchange(volatile long unsigned int*, long unsigned int) <nahe Übereinstimmung>
       FORCEINLINE unsigned long InterlockedExchange (unsigned long volatile *Target, unsigned long Value) {
                                 ^
    /usr/include/w32api/winbase.h:2973:29: Anmerkung:   Umwandlung von Argument 1 wäre unzulässig:
    ../src/msw/volume.cpp:469:27: Fehler: ungültige Umwandlung von »long int*« in »volatile long unsigned int*« [-fpermissive]
         ::InterlockedExchange(&s_cancelSearch, TRUE);
                               ^~~~~~~~~~~~~~~
    In file included from /usr/include/w32api/windows.h:70:0,
                     from ../include/wx/msw/wrapwin.h:65,
                     from ../src/msw/volume.cpp:45:
    /usr/include/w32api/winbase.h:2982:32: Anmerkung: candidate: long long unsigned int _InterlockedExchange(volatile long long unsigned int*, long long unsigned int) <nahe Übereinstimmung>
       FORCEINLINE unsigned __int64 InterlockedExchange (unsigned __int64 volatile *Target, unsigned __int64 Value) {
                                    ^
    /usr/include/w32api/winbase.h:2982:32: Anmerkung:   Umwandlung von Argument 1 wäre unzulässig:
    ../src/msw/volume.cpp:469:27: Fehler: ungültige Umwandlung von »long int*« in »volatile long long unsigned int*« [-fpermissive]
         ::InterlockedExchange(&s_cancelSearch, TRUE);
                               ^~~~~~~~~~~~~~~
    make: *** [Makefile:29589: baselib_volume.o] Fehler 1
    


  • Das Problem ist (oder war) bekannt. Google nach "cygwin 64 InterlockedExchange"
    Die Bug Reports sind allerdings schon mindestens 3-4 Jahre alt. Vielleicht hilft Dir eine aktuellere Cygwin Version.


Anmelden zum Antworten