There seem to be some build errors when using the C++ bindings, at least on some recent versions of MinGW headers and/or Boost headers (happens when building PulseView). This is probably related to the following defines being in MinGW headers (and in enums.hpp): i686-w64-mingw32.static/include/winuser.h:#define DIFFERENCE 11 i686-w64-mingw32.static/include/wingdi.h:#define RELATIVE 2 This may not have been exposed until recently (building PulseView used to work on MinGW), my guess is that boost (1.57 here) now includes the above MinGW headers (but didn't do so before)? Log: [...]/usr/bin/i686-w64-mingw32.static-g++ -DBOOST_THREAD_USE_LIB -DENABLE_DECODE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_NO_KEYWORDS -DQT_STATICPLUGIN -DQT_SVG_LIB -D__STDC_LIMIT_MACROS -O3 -DNDEBUG @CMakeFiles/pulseview.dir/includes_CXX.rsp -Wall -Wextra -std=c++11 -o CMakeFiles/pulseview.dir/main.cpp.obj -c [...]/pulseview/main.cpp Building CXX object CMakeFiles/pulseview.dir/pv/devicemanager.cpp.obj [...]/usr/bin/i686-w64-mingw32.static-g++ -DBOOST_THREAD_USE_LIB -DENABLE_DECODE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_NO_KEYWORDS -DQT_STATICPLUGIN -DQT_SVG_LIB -D__STDC_LIMIT_MACROS -O3 -DNDEBUG @CMakeFiles/pulseview.dir/includes_CXX.rsp -Wall -Wextra -std=c++11 -o CMakeFiles/pulseview.dir/pv/devicemanager.cpp.obj -c [...]/pulseview/pv/devicemanager.cpp /usr/bin/cmake -E cmake_progress_report [...]/pulseview/CMakeFiles 32 [ 32%] Building CXX object CMakeFiles/pulseview.dir/pv/session.cpp.obj [...]/usr/bin/i686-w64-mingw32.static-g++ -DBOOST_THREAD_USE_LIB -DENABLE_DECODE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_NO_KEYWORDS -DQT_STATICPLUGIN -DQT_SVG_LIB -D__STDC_LIMIT_MACROS -O3 -DNDEBUG @CMakeFiles/pulseview.dir/includes_CXX.rsp -Wall -Wextra -std=c++11 -o CMakeFiles/pulseview.dir/pv/session.cpp.obj -c [...]/pulseview/pv/session.cpp In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:72:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/devicemanager.cpp:22: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:32: error: expected unqualified-id before numeric constant static const Quantity * const DIFFERENCE; ^ In file included from /home/uwe/sr_mingw_qt5/include/libsigrok/libsigrok.hpp:1023:0, from [...]/pulseview/pv/devicemanager.cpp:30: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:26: error: expected ';' at end of member declaration static const Quantity * const DIFFERENCE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:72:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/devicemanager.cpp:22: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:32: error: expected unqualified-id before numeric constant static const Quantity * const DIFFERENCE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:71:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/devicemanager.cpp:22: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:36: error: expected unqualified-id before numeric constant static const QuantityFlag * const RELATIVE; ^ In file included from /home/uwe/sr_mingw_qt5/include/libsigrok/libsigrok.hpp:1023:0, from [...]/pulseview/pv/devicemanager.cpp:30: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:30: error: expected ';' at end of member declaration static const QuantityFlag * const RELATIVE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:71:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/devicemanager.cpp:22: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:36: error: expected unqualified-id before numeric constant static const QuantityFlag * const RELATIVE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:72:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/mainwindow.hpp:29, from [...]/pulseview/pv/mainwindow.cpp:43: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:32: error: expected unqualified-id before numeric constant static const Quantity * const DIFFERENCE; ^ In file included from /home/uwe/sr_mingw_qt5/include/libsigrok/libsigrok.hpp:1023:0, from [...]/pulseview/pv/mainwindow.cpp:60: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:26: error: expected ';' at end of member declaration static const Quantity * const DIFFERENCE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:72:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/mainwindow.hpp:29, from [...]/pulseview/pv/mainwindow.cpp:43: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:32: error: expected unqualified-id before numeric constant static const Quantity * const DIFFERENCE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:71:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/mainwindow.hpp:29, from [...]/pulseview/pv/mainwindow.cpp:43: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:36: error: expected unqualified-id before numeric constant static const QuantityFlag * const RELATIVE; ^ In file included from /home/uwe/sr_mingw_qt5/include/libsigrok/libsigrok.hpp:1023:0, from [...]/pulseview/pv/mainwindow.cpp:60: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:30: error: expected ';' at end of member declaration static const QuantityFlag * const RELATIVE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:71:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/mainwindow.hpp:29, from [...]/pulseview/pv/mainwindow.cpp:43: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:36: error: expected unqualified-id before numeric constant static const QuantityFlag * const RELATIVE; ^ CMakeFiles/pulseview.dir/build.make:365: recipe for target 'CMakeFiles/pulseview.dir/pv/mainwindow.cpp.obj' failed make[2]: *** [CMakeFiles/pulseview.dir/pv/mainwindow.cpp.obj] Error 1 make[2]: *** Waiting for unfinished jobs.... In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:72:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/session.cpp:25: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:32: error: expected unqualified-id before numeric constant static const Quantity * const DIFFERENCE; ^ In file included from /home/uwe/sr_mingw_qt5/include/libsigrok/libsigrok.hpp:1023:0, from [...]/pulseview/pv/session.cpp:48: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:26: error: expected ';' at end of member declaration static const Quantity * const DIFFERENCE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:72:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/session.cpp:25: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:153:32: error: expected unqualified-id before numeric constant static const Quantity * const DIFFERENCE; ^ CMakeFiles/pulseview.dir/build.make:341: recipe for target 'CMakeFiles/pulseview.dir/pv/devicemanager.cpp.obj' failed make[2]: *** [CMakeFiles/pulseview.dir/pv/devicemanager.cpp.obj] Error 1 In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:71:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/session.cpp:25: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:36: error: expected unqualified-id before numeric constant static const QuantityFlag * const RELATIVE; ^ In file included from /home/uwe/sr_mingw_qt5/include/libsigrok/libsigrok.hpp:1023:0, from [...]/pulseview/pv/session.cpp:48: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:30: error: expected ';' at end of member declaration static const QuantityFlag * const RELATIVE; ^ In file included from [...]/usr/i686-w64-mingw32.static/include/windows.h:71:0, from [...]/usr/i686-w64-mingw32.static/include/boost/detail/interlocked.hpp:27, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_primitives.hpp:18, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/win32/thread_data.hpp:11, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread_only.hpp:15, from [...]/usr/i686-w64-mingw32.static/include/boost/thread/thread.hpp:12, from [...]/usr/i686-w64-mingw32.static/include/boost/thread.hpp:13, from [...]/pulseview/pv/session.hpp:32, from [...]/pulseview/pv/session.cpp:25: /home/uwe/sr_mingw_qt5/include/libsigrok/enums.hpp:299:36: error: expected unqualified-id before numeric constant static const QuantityFlag * const RELATIVE; ^ CMakeFiles/pulseview.dir/build.make:389: recipe for target 'CMakeFiles/pulseview.dir/pv/session.cpp.obj' failed make[2]: *** [CMakeFiles/pulseview.dir/pv/session.cpp.obj] Error 1 make[2]: Leaving directory '[...]/pulseview' CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/pulseview.dir/all' failed make[1]: *** [CMakeFiles/pulseview.dir/all] Error 2 make[1]: Leaving directory '[...]/pulseview' Makefile:137: recipe for target 'all' failed make: *** [all] Error 2
You can apparently #define NOGDI to avoid this crap, at least with some versions of the headers.
Fixed in 627ffe3f3a5d0a8f38e35668bd4ed71321f09b91 by a (slightly modified) patch from here: http://article.gmane.org/gmane.comp.debugging.sigrok.devel/1545 Apparently both NOGDI and NORESOURCE are needed to fix the build (for now at least). There are various other macros which allow control over how much windows.h shall pollute the namespace: https://stackoverflow.com/questions/1394910/how-to-tame-the-windows-headers-useful-defines/1394929#1394929 A quick test with WIN32_LEAN_AND_MEAN didn't seem to work for me, but using NOGDI and NORESOURCE does. I think it may be worth reporting this as a Boost bug, ideally their thread.hpp would not include windows.h at all, and/or use one or more of the special macros to limit the amount of namespace pollution that thread.hpp forces onto its users on Windows (via windows.h).