SoapySDR icon indicating copy to clipboard operation
SoapySDR copied to clipboard

Soapy refusing to compile in MinGW-w64

Open Kungergely opened this issue 5 years ago • 12 comments

Unfortunately tried as I can but I just can't make it compile with the minGW compiler. The problem almost certainly has something to do with C++11 support, which your code seems to pretty heavily rely on. The version of GCC/G++ it uses is 5.3.1, so it's far from being an old one, and yet I get tons of errors related to mutex and a lot of other functionality introduced in C++11. Any ideas how could I make it work?

Kungergely avatar Apr 16 '19 22:04 Kungergely

MinGW is probably not a heavily tested platform, and so maybe many of the ifdefs in either cmake or the C sources incorrectly detect windows vs unix headers and things like that, which should be easy to fix. Can you share the output of running cmake, and the output of make VERBOSE=1

guruofquality avatar Apr 16 '19 23:04 guruofquality

Sure! The problem seems to be present in quite a few files though.

The cmake output:

root@9644e80a5d71:~/rtl_433/src/SoapySDR# cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$BUILD_HOME/build" -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=amd64
-- The C compiler identification is GNU 5.3.1
-- The CXX compiler identification is GNU 5.3.1
-- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc
-- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++
-- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type not specified: defaulting to release.
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
--
-- #############################################
-- ## Begin configuration for Python support...
-- #############################################
-- Enabling optional Python bindings if possible...
-- Could NOT find SWIG (missing:  SWIG_EXECUTABLE SWIG_DIR)
-- SWIG_FOUND: FALSE -
-- Could NOT find PythonInterp (missing:  PYTHON_EXECUTABLE)
-- PYTHONINTERP_FOUND: FALSE -
-- PYTHON_EXECUTABLE: PYTHON_EXECUTABLE-NOTFOUND
-- PYTHON_INSTALL_DIR: ${prefix}/
-- Could NOT find PythonLibs (missing:  PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
-- PYTHONLIBS_FOUND: FALSE -
-- PYTHON_INCLUDE_DIRS:
-- PYTHON_LIBRARIES: PYTHON_LIBRARY-NOTFOUND
-- Performing Test SIZE_T_IS_UNSIGNED_INT
-- Performing Test SIZE_T_IS_UNSIGNED_INT - Failed
--
-- #############################################
-- ## Begin configuration for Python3 support...
-- #############################################
-- Enabling optional Python3 bindings if possible...
-- Could NOT find SWIG (missing:  SWIG_EXECUTABLE SWIG_DIR)
-- SWIG_FOUND: FALSE -
-- Could NOT find Python3Interp (missing:  PYTHON3_EXECUTABLE)
-- Could NOT find Python3InterpDbg (missing:  PYTHON3_DBG_EXECUTABLE)
-- PYTHON3INTERP_FOUND: FALSE
-- PYTHON3_EXECUTABLE: PYTHON3_EXECUTABLE-NOTFOUND
-- PYTHON3_INSTALL_DIR: ${prefix}/
-- Could NOT find Python3Libs (missing:  PYTHON3_LIBRARIES PYTHON3_INCLUDE_DIRS)
-- PYTHON3LIBS_FOUND: FALSE
-- PYTHON3_INCLUDE_DIRS: PYTHON3_INCLUDE_DIR-NOTFOUND
-- PYTHON3_LIBRARIES: PYTHON3_LIBRARY-NOTFOUND
--
-- ######################################################
-- ## SoapySDR enabled features
-- ######################################################
--
 * Library , runtime library v0.8.0-g9a942698
 * Apps , command line applications
 * Tests , library unit tests

-- ######################################################
-- ## SoapySDR disabled features
-- ######################################################
--
 * Docs , doxygen documentation
 * Python , python bindings v
 * Python3 , python3 bindings

-- SoapySDR version: v0.8.0-g9a942698
-- ABI/so version: v0.8
-- Install prefix: /root/rtl_433/build
-- Configuring done
-- Generating done
-- Build files have been written to: /root/rtl_433/src/SoapySDR

The stdout output of the make command:

root@9644e80a5d71:~/rtl_433/src/SoapySDR# make VERBOSE=1 -j2 2> output.txt
/usr/bin/cmake -H/root/rtl_433/src/SoapySDR -B/root/rtl_433/src/SoapySDR --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /root/rtl_433/src/SoapySDR/CMakeFiles /root/rtl_433/src/SoapySDR/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/root/rtl_433/src/SoapySDR'
make -f lib/CMakeFiles/SoapySDR.dir/build.make lib/CMakeFiles/SoapySDR.dir/depend
make[2]: Entering directory '/root/rtl_433/src/SoapySDR'
cd /root/rtl_433/src/SoapySDR && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /root/rtl_433/src/SoapySDR /root/rtl_433/src/SoapySDR/lib /root/rtl_433/src/SoapySDR /root/rtl_433/src/SoapySDR/lib /root/rtl_433/src/SoapySDR/lib/CMakeFiles/SoapySDR.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/root/rtl_433/src/SoapySDR'
make -f lib/CMakeFiles/SoapySDR.dir/build.make lib/CMakeFiles/SoapySDR.dir/build
make[2]: Entering directory '/root/rtl_433/src/SoapySDR'
[  5%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Device.cpp.obj
[  5%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Factory.cpp.obj
cd /root/rtl_433/src/SoapySDR/lib && /usr/bin/x86_64-w64-mingw32-g++    @CMakeFiles/SoapySDR.dir/includes_CXX.rsp -O3 -DNDEBUG   -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -std=gnu++11 -o CMakeFiles/SoapySDR.dir/Factory.cpp.obj -c /root/rtl_433/src/SoapySDR/lib/Factory.cpp
cd /root/rtl_433/src/SoapySDR/lib && /usr/bin/x86_64-w64-mingw32-g++    @CMakeFiles/SoapySDR.dir/includes_CXX.rsp -O3 -DNDEBUG   -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -std=gnu++11 -o CMakeFiles/SoapySDR.dir/Device.cpp.obj -c /root/rtl_433/src/SoapySDR/lib/Device.cpp
lib/CMakeFiles/SoapySDR.dir/build.make:88: recipe for target 'lib/CMakeFiles/SoapySDR.dir/Factory.cpp.obj' failed
make[2]: Leaving directory '/root/rtl_433/src/SoapySDR'
CMakeFiles/Makefile2:117: recipe for target 'lib/CMakeFiles/SoapySDR.dir/all' failed
make[1]: Leaving directory '/root/rtl_433/src/SoapySDR'
Makefile:138: recipe for target 'all' failed

The stderr output:

/root/rtl_433/src/SoapySDR/lib/Factory.cpp:14:13: error: 'recursive_mutex' in namespace 'std' does not name a type
 static std::recursive_mutex &getFactoryMutex(void)
             ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:38:22: warning: 'static SoapySDR::KwargsList SoapySDR::Device::enumerate(const Kwargs&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::KwargsList SoapySDR::Device::enumerate(const Kwargs &args)
                      ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: In static member function 'static SoapySDR::KwargsList SoapySDR::Device::enumerate(const Kwargs&)':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:47:17: error: 'recursive_mutex' in namespace 'std' does not name a type
     static std::recursive_mutex cacheMutex;
                 ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:55:25: error: 'recursive_mutex' is not a member of 'std'
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                         ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:55:25: error: 'recursive_mutex' is not a member of 'std'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:55:45: error: template argument 1 is invalid
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                                             ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:55:52: error: 'cacheMutex' was not declared in this scope
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                                                    ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_algobase.h:64:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:60,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h: In instantiation of 'struct std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >, std::shared_future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > > >':
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h:102:11:   required from 'struct std::pair<const std::pair<std::__cxx11::basic_string<char>, std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >, std::shared_future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > > > >'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:57:55:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h:102:11: error: 'std::pair<_T1, _T2>::second' has incomplete type
       _T2 second;                /// @c second is a copy of the second object
           ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:118:11: note: declaration of 'class std::shared_future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >'
     class shared_future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:55:47: warning: unused variable 'lock' [-Wunused-variable]
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                                               ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:72:25: error: 'recursive_mutex' is not a member of 'std'
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                         ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:72:25: error: 'recursive_mutex' is not a member of 'std'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:72:45: error: template argument 1 is invalid
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                                             ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:72:52: error: 'cacheMutex' was not declared in this scope
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                                                    ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:85:71: error: invalid use of incomplete type 'class std::future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >'
             futures[it.first] = std::async(launchType, it.second, args);
                                                                       ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >'
     class future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:72:47: warning: unused variable 'lock' [-Wunused-variable]
         std::lock_guard<std::recursive_mutex> lock(cacheMutex);
                                               ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_algobase.h:64:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:60,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h: In instantiation of 'struct std::pair<const std::__cxx11::basic_string<char>, std::shared_future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > > >':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:92:21:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h:102:11: error: 'std::pair<_T1, _T2>::second' has incomplete type
       _T2 second;                /// @c second is a copy of the second object
           ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:118:11: note: declaration of 'class std::shared_future<std::vector<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >'
     class shared_future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: At global scope:
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:114:22: warning: 'static SoapySDR::KwargsList SoapySDR::Device::enumerate(const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::KwargsList SoapySDR::Device::enumerate(const std::string &args)
                      ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:130:19: warning: 'static SoapySDR::Device* SoapySDR::Device::make(const Kwargs&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Device* SoapySDR::Device::make(const Kwargs &inputArgs)
                   ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: In static member function 'static SoapySDR::Device* SoapySDR::Device::make(const Kwargs&)':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:132:22: error: 'recursive_mutex' is not a member of 'std'
     std::unique_lock<std::recursive_mutex> lock(getFactoryMutex());
                      ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:132:22: error: 'recursive_mutex' is not a member of 'std'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:132:42: error: template argument 1 is invalid
     std::unique_lock<std::recursive_mutex> lock(getFactoryMutex());
                                          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:132:65: error: 'getFactoryMutex' was not declared in this scope
     std::unique_lock<std::recursive_mutex> lock(getFactoryMutex());
                                                                 ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:141:10: error: request for member 'unlock' in 'lock', which is of non-class type 'int'
     lock.unlock();
          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:144:10: error: request for member 'lock' in 'lock', which is of non-class type 'int'
     lock.lock();
          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:168:34: error: aggregate 'std::shared_future<SoapySDR::Device*> deviceFuture' has incomplete type and cannot be defined
     std::shared_future<Device *> deviceFuture;
                                  ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:174:27: error: invalid use of incomplete type 'class std::shared_future<SoapySDR::Device*>'
         if (not cacheEntry.valid()) cacheEntry = std::async(std::launch::deferred, it.second, hybridArgs);
                           ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:118:11: note: declaration of 'class std::shared_future<SoapySDR::Device*>'
     class shared_future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:174:105: error: invalid use of incomplete type 'class std::future<SoapySDR::Device*>'
         if (not cacheEntry.valid()) cacheEntry = std::async(std::launch::deferred, it.second, hybridArgs);
                                                                                                         ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<SoapySDR::Device*>'
     class future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:183:10: error: request for member 'unlock' in 'lock', which is of non-class type 'int'
     lock.unlock();
          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:185:10: error: request for member 'lock' in 'lock', which is of non-class type 'int'
     lock.lock();
          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: At global scope:
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:199:19: warning: 'static SoapySDR::Device* SoapySDR::Device::make(const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Device *SoapySDR::Device::make(const std::string &args)
                   ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:204:6: warning: 'static void SoapySDR::Device::unmake(SoapySDR::Device*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::unmake(Device *device)
      ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: In static member function 'static void SoapySDR::Device::unmake(SoapySDR::Device*)':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:208:22: error: 'recursive_mutex' is not a member of 'std'
     std::unique_lock<std::recursive_mutex> lock(getFactoryMutex());
                      ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:208:22: error: 'recursive_mutex' is not a member of 'std'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:208:42: error: template argument 1 is invalid
     std::unique_lock<std::recursive_mutex> lock(getFactoryMutex());
                                          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:208:65: error: 'getFactoryMutex' was not declared in this scope
     std::unique_lock<std::recursive_mutex> lock(getFactoryMutex());
                                                                 ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:232:10: error: request for member 'unlock' in 'lock', which is of non-class type 'int'
     lock.unlock();
          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:234:10: error: request for member 'lock' in 'lock', which is of non-class type 'int'
     lock.lock();
          ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: At global scope:
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:243:33: warning: 'static std::vector<SoapySDR::Device*> SoapySDR::Device::make(const KwargsList&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<SoapySDR::Device *> SoapySDR::Device::make(const KwargsList &argsList)
                                 ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: In static member function 'static std::vector<SoapySDR::Device*> SoapySDR::Device::make(const KwargsList&)':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:248:102: error: invalid use of incomplete type 'class std::future<SoapySDR::Device*>'
         futures.push_back(std::async(std::launch::async, [args]{return SoapySDR::Device::make(args);}));
                                                                                                      ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<SoapySDR::Device*>'
     class future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:254:62: error: invalid use of incomplete type 'class std::future<SoapySDR::Device*>'
         for (auto &future : futures) devices.push_back(future.get());
                                                              ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<SoapySDR::Device*>'
     class future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: At global scope:
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:268:6: warning: 'static void SoapySDR::Device::unmake(const std::vector<SoapySDR::Device*>&)' redeclared without dllimport attribute after being referenced with dll linkage
 void SoapySDR::Device::unmake(const std::vector<Device *> &devices)
      ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp: In static member function 'static void SoapySDR::Device::unmake(const std::vector<SoapySDR::Device*>&)':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:273:101: error: invalid use of incomplete type 'class std::future<void>'
         futures.push_back(std::async(std::launch::async, [device]{SoapySDR::Device::unmake(device);}));
                                                                                                     ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<void>'
     class future;
           ^
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:282:20: error: invalid use of incomplete type 'class std::future<void>'
         try {future.get();}
                    ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<void>'
     class future;
           ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_algobase.h:64:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:60,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h: In instantiation of 'struct std::pair<const std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >, std::shared_future<SoapySDR::Device*> >':
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_map.h:481:10:   required from 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >; _Tp = std::shared_future<SoapySDR::Device*>; _Compare = std::less<std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >; _Alloc = std::allocator<std::pair<const std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >, std::shared_future<SoapySDR::Device*> > >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = std::shared_future<SoapySDR::Device*>; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >]'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:173:48:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_pair.h:102:11: error: 'std::pair<_T1, _T2>::second' has incomplete type
       _T2 second;                /// @c second is a copy of the second object
           ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:118:11: note: declaration of 'class std::shared_future<SoapySDR::Device*>'
     class shared_future;
           ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_algobase.h:67:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:60,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_iterator.h: In instantiation of '__gnu_cxx::__normal_iterator<_Iterator, _Container>& __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator++() [with _Iterator = std::future<SoapySDR::Device*>*; _Container = std::vector<std::future<SoapySDR::Device*> >]':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:254:29:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_iterator.h:763:2: error: cannot increment a pointer to incomplete type 'std::future<SoapySDR::Device*>'
  ++_M_current;
  ^
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_iterator.h: In instantiation of '__gnu_cxx::__normal_iterator<_Iterator, _Container>& __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator++() [with _Iterator = std::future<void>*; _Container = std::vector<std::future<void> >]':
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:280:25:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_iterator.h:763:2: error: cannot increment a pointer to incomplete type 'std::future<void>'
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:64:0,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h: In instantiation of 'std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = std::future<SoapySDR::Device*>; _Alloc = std::allocator<std::future<SoapySDR::Device*> >]':
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h:257:15:   required from 'std::vector<_Tp, _Alloc>::vector() [with _Tp = std::future<SoapySDR::Device*>; _Alloc = std::allocator<std::future<SoapySDR::Device*> >]'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:245:40:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h:161:9: error: invalid use of incomplete type 'class std::future<SoapySDR::Device*>'
         - this->_M_impl._M_start); }
         ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<SoapySDR::Device*>'
     class future;
           ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:64:0,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h: In instantiation of 'std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = std::future<void>; _Alloc = std::allocator<std::future<void> >]':
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h:257:15:   required from 'std::vector<_Tp, _Alloc>::vector() [with _Tp = std::future<void>; _Alloc = std::allocator<std::future<void> >]'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:270:36:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h:161:9: error: invalid use of incomplete type 'class std::future<void>'
         - this->_M_impl._M_start); }
         ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'class std::future<void>'
     class future;
           ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:62:0,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_construct.h: In instantiation of 'void std::_Destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator = std::future<SoapySDR::Device*>*]':
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_construct.h:151:15:   required from 'void std::_Destroy(_ForwardIterator, _ForwardIterator, std::allocator<_T2>&) [with _ForwardIterator = std::future<SoapySDR::Device*>*; _Tp = std::future<SoapySDR::Device*>]'
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h:424:22:   required from 'std::vector<_Tp, _Alloc>::~vector() [with _Tp = std::future<SoapySDR::Device*>; _Alloc = std::allocator<std::future<SoapySDR::Device*> >]'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:245:40:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_construct.h:127:11: error: invalid use of incomplete type 'std::iterator_traits<std::future<SoapySDR::Device*>*>::value_type {aka class std::future<SoapySDR::Device*>}'
  __destroy(__first, __last);
           ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'std::iterator_traits<std::future<SoapySDR::Device*>*>::value_type {aka class std::future<SoapySDR::Device*>}'
     class future;
           ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/vector:62:0,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Types.hpp:15,
                 from /root/rtl_433/src/SoapySDR/include/SoapySDR/Device.hpp:14,
                 from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:4:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_construct.h: In instantiation of 'void std::_Destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator = std::future<void>*]':
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_construct.h:151:15:   required from 'void std::_Destroy(_ForwardIterator, _ForwardIterator, std::allocator<_T2>&) [with _ForwardIterator = std::future<void>*; _Tp = std::future<void>]'
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_vector.h:424:22:   required from 'std::vector<_Tp, _Alloc>::~vector() [with _Tp = std::future<void>; _Alloc = std::allocator<std::future<void> >]'
/root/rtl_433/src/SoapySDR/lib/Factory.cpp:270:36:   required from here
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/bits/stl_construct.h:127:11: error: invalid use of incomplete type 'std::iterator_traits<std::future<void>*>::value_type {aka class std::future<void>}'
  __destroy(__first, __last);
           ^
In file included from /root/rtl_433/src/SoapySDR/lib/Factory.cpp:10:0:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:115:11: note: declaration of 'std::iterator_traits<std::future<void>*>::value_type {aka class std::future<void>}'
     class future;
           ^
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future: At global scope:
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:173:5: error: 'std::future<typename std::result_of<_Functor(_ArgTypes ...)>::type> std::async(std::launch, _Fn&&, _Args&& ...) [with _Fn = SoapySDR::Device::make(const KwargsList&)::<lambda()>; _Args = {}; typename std::result_of<_Functor(_ArgTypes ...)>::type = SoapySDR::Device*]', declared using local type 'SoapySDR::Device::make(const KwargsList&)::<lambda()>', is used but never defined [-fpermissive]
     async(launch __policy, _Fn&& __fn, _Args&&... __args);
     ^
/usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/include/c++/future:173:5: error: 'std::future<typename std::result_of<_Functor(_ArgTypes ...)>::type> std::async(std::launch, _Fn&&, _Args&& ...) [with _Fn = SoapySDR::Device::unmake(const std::vector<SoapySDR::Device*>&)::<lambda()>; _Args = {}; typename std::result_of<_Functor(_ArgTypes ...)>::type = void]', declared using local type 'SoapySDR::Device::unmake(const std::vector<SoapySDR::Device*>&)::<lambda()>', is used but never defined [-fpermissive]
/root/rtl_433/src/SoapySDR/lib/Device.cpp:10:1: warning: 'virtual SoapySDR::Device::~Device()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Device::~Device(void)
 ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:18:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getDriverKey() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getDriverKey(void) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:23:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getHardwareKey() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getHardwareKey(void) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:28:18: warning: 'virtual SoapySDR::Kwargs SoapySDR::Device::getHardwareInfo() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Kwargs SoapySDR::Device::getHardwareInfo(void) const
                  ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:36:6: warning: 'virtual void SoapySDR::Device::setFrontendMapping(int, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setFrontendMapping(const int, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:41:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getFrontendMapping(int) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getFrontendMapping(const int) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:46:8: warning: 'virtual size_t SoapySDR::Device::getNumChannels(int) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 size_t SoapySDR::Device::getNumChannels(const int) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:51:18: warning: 'virtual SoapySDR::Kwargs SoapySDR::Device::getChannelInfo(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Kwargs SoapySDR::Device::getChannelInfo(const int, const size_t) const
                  ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:56:6: warning: 'virtual bool SoapySDR::Device::getFullDuplex(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::getFullDuplex(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:64:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::getStreamFormats(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::getStreamFormats(const int, const size_t) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:69:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getNativeStreamFormat(int, size_t, double&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getNativeStreamFormat(const int, const size_t, double &fullScale) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:75:23: warning: 'virtual SoapySDR::ArgInfoList SoapySDR::Device::getStreamArgsInfo(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::ArgInfoList SoapySDR::Device::getStreamArgsInfo(const int, const size_t) const
                       ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:80:19: warning: 'virtual SoapySDR::Stream* SoapySDR::Device::setupStream(int, const string&, const std::vector<long long unsigned int>&, const Kwargs&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Stream *SoapySDR::Device::setupStream(const int, const std::string &, const std::vector<size_t> &, const Kwargs &)
                   ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:85:6: warning: 'virtual void SoapySDR::Device::closeStream(SoapySDR::Stream*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::closeStream(Stream *)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:90:8: warning: 'virtual size_t SoapySDR::Device::getStreamMTU(SoapySDR::Stream*) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 size_t SoapySDR::Device::getStreamMTU(Stream *) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:96:5: warning: 'virtual int SoapySDR::Device::activateStream(SoapySDR::Stream*, int, long long int, size_t)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::activateStream(Stream *, const int flags, const long long, const size_t)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:101:5: warning: 'virtual int SoapySDR::Device::deactivateStream(SoapySDR::Stream*, int, long long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::deactivateStream(Stream *, const int flags, const long long)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:106:5: warning: 'virtual int SoapySDR::Device::readStream(SoapySDR::Stream*, void* const*, size_t, int&, long long int&, long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::readStream(Stream *, void * const *, const size_t, int &, long long &, const long)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:111:5: warning: 'virtual int SoapySDR::Device::writeStream(SoapySDR::Stream*, const void* const*, size_t, int&, long long int, long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::writeStream(Stream *, const void * const *, const size_t, int &, const long long, const long)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:116:5: warning: 'virtual int SoapySDR::Device::readStreamStatus(SoapySDR::Stream*, size_t&, int&, long long int&, long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::readStreamStatus(Stream *, size_t &, int &, long long &, const long)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:124:8: warning: 'virtual size_t SoapySDR::Device::getNumDirectAccessBuffers(SoapySDR::Stream*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 size_t SoapySDR::Device::getNumDirectAccessBuffers(Stream *)
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:129:5: warning: 'virtual int SoapySDR::Device::getDirectAccessBufferAddrs(SoapySDR::Stream*, size_t, void**)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::getDirectAccessBufferAddrs(Stream *, const size_t, void **)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:134:5: warning: 'virtual int SoapySDR::Device::acquireReadBuffer(SoapySDR::Stream*, size_t&, const void**, int&, long long int&, long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::acquireReadBuffer(Stream *, size_t &, const void **, int &, long long &, const long)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:139:6: warning: 'virtual void SoapySDR::Device::releaseReadBuffer(SoapySDR::Stream*, size_t)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::releaseReadBuffer(Stream *, const size_t)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:144:5: warning: 'virtual int SoapySDR::Device::acquireWriteBuffer(SoapySDR::Stream*, size_t&, void**, long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 int SoapySDR::Device::acquireWriteBuffer(Stream *, size_t &, void **, const long)
     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:149:6: warning: 'virtual void SoapySDR::Device::releaseWriteBuffer(SoapySDR::Stream*, size_t, size_t, int&, long long int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::releaseWriteBuffer(Stream *, const size_t, const size_t, int &, const long long)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:157:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listAntennas(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listAntennas(const int, const size_t) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:162:6: warning: 'virtual void SoapySDR::Device::setAntenna(int, size_t, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setAntenna(const int, const size_t, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:167:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getAntenna(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getAntenna(const int, const size_t) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:176:6: warning: 'virtual bool SoapySDR::Device::hasDCOffsetMode(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::hasDCOffsetMode(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:181:6: warning: 'virtual void SoapySDR::Device::setDCOffsetMode(int, size_t, bool)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setDCOffsetMode(const int, const size_t, const bool)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:186:6: warning: 'virtual bool SoapySDR::Device::getDCOffsetMode(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::getDCOffsetMode(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:191:6: warning: 'virtual bool SoapySDR::Device::hasDCOffset(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::hasDCOffset(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:196:6: warning: 'virtual void SoapySDR::Device::setDCOffset(int, size_t, const std::complex<double>&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setDCOffset(const int, const size_t, const std::complex<double> &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:201:22: warning: 'virtual std::complex<double> SoapySDR::Device::getDCOffset(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::complex<double> SoapySDR::Device::getDCOffset(const int, const size_t) const
                      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:206:6: warning: 'virtual bool SoapySDR::Device::hasIQBalance(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::hasIQBalance(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:211:6: warning: 'virtual void SoapySDR::Device::setIQBalance(int, size_t, const std::complex<double>&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setIQBalance(const int, const size_t, const std::complex<double> &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:216:22: warning: 'virtual std::complex<double> SoapySDR::Device::getIQBalance(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::complex<double> SoapySDR::Device::getIQBalance(const int, const size_t) const
                      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:221:6: warning: 'virtual bool SoapySDR::Device::hasFrequencyCorrection(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::hasFrequencyCorrection(const int direction, const size_t channel) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:228:6: warning: 'virtual void SoapySDR::Device::setFrequencyCorrection(int, size_t, double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setFrequencyCorrection(const int direction, const size_t channel, const double value)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:238:8: warning: 'virtual double SoapySDR::Device::getFrequencyCorrection(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 double SoapySDR::Device::getFrequencyCorrection(const int direction, const size_t channel) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:252:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listGains(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listGains(const int, const size_t) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:257:6: warning: 'virtual bool SoapySDR::Device::hasGainMode(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::hasGainMode(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:262:6: warning: 'virtual void SoapySDR::Device::setGainMode(int, size_t, bool)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setGainMode(const int, const size_t, const bool)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:267:6: warning: 'virtual bool SoapySDR::Device::getGainMode(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::getGainMode(const int, const size_t) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:272:6: warning: 'virtual void SoapySDR::Device::setGain(int, size_t, double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setGain(const int dir, const size_t channel, double gain)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:298:6: warning: 'virtual void SoapySDR::Device::setGain(int, size_t, const string&, double)' redeclared without dllimport attribute after being referenced with dll linkage
 void SoapySDR::Device::setGain(const int, const size_t, const std::string &, const double)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:303:8: warning: 'virtual double SoapySDR::Device::getGain(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 double SoapySDR::Device::getGain(const int dir, const size_t channel) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:315:8: warning: 'virtual double SoapySDR::Device::getGain(int, size_t, const string&) const' redeclared without dllimport attribute after being referenced with dll linkage
 double SoapySDR::Device::getGain(const int, const size_t, const std::string &) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:320:17: warning: 'virtual SoapySDR::Range SoapySDR::Device::getGainRange(int, size_t, const string&) const' redeclared without dllimport attribute after being referenced with dll linkage
 SoapySDR::Range SoapySDR::Device::getGainRange(const int, const size_t, const std::string &) const
                 ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:325:17: warning: 'virtual SoapySDR::Range SoapySDR::Device::getGainRange(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::Range SoapySDR::Device::getGainRange(const int dir, const size_t channel) const
                 ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:340:6: warning: 'virtual void SoapySDR::Device::setFrequency(int, size_t, double, const Kwargs&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setFrequency(const int dir, const size_t chan, double freq, const Kwargs &args)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:380:6: warning: 'virtual void SoapySDR::Device::setFrequency(int, size_t, const string&, double, const Kwargs&)' redeclared without dllimport attribute after being referenced with dll linkage
 void SoapySDR::Device::setFrequency(const int, const size_t, const std::string &, const double, const Kwargs &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:385:8: warning: 'virtual double SoapySDR::Device::getFrequency(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 double SoapySDR::Device::getFrequency(const int dir, const size_t chan) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:399:8: warning: 'virtual double SoapySDR::Device::getFrequency(int, size_t, const string&) const' redeclared without dllimport attribute after being referenced with dll linkage
 double SoapySDR::Device::getFrequency(const int, const size_t, const std::string &) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:404:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listFrequencies(int, size_t) const' redeclared without dllimport attribute after being referenced with dll linkage
 std::vector<std::string> SoapySDR::Device::listFrequencies(const int, const size_t) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:409:21: warning: 'virtual SoapySDR::RangeList SoapySDR::Device::getFrequencyRange(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::RangeList SoapySDR::Device::getFrequencyRange(const int dir, const size_t chan) const
                     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:445:21: warning: 'virtual SoapySDR::RangeList SoapySDR::Device::getFrequencyRange(int, size_t, const string&) const' redeclared without dllimport attribute after being referenced with dll linkage
 SoapySDR::RangeList SoapySDR::Device::getFrequencyRange(const int, const size_t, const std::string &) const
                     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:450:23: warning: 'virtual SoapySDR::ArgInfoList SoapySDR::Device::getFrequencyArgsInfo(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::ArgInfoList SoapySDR::Device::getFrequencyArgsInfo(const int dir, const size_t chan) const
                       ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:496:6: warning: 'virtual void SoapySDR::Device::setSampleRate(int, size_t, double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setSampleRate(const int, const size_t, const double)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:501:8: warning: 'virtual double SoapySDR::Device::getSampleRate(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 double SoapySDR::Device::getSampleRate(const int, const size_t) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:506:21: warning: 'virtual std::vector<double> SoapySDR::Device::listSampleRates(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<double> SoapySDR::Device::listSampleRates(const int, const size_t) const
                     ^
make[2]: *** [lib/CMakeFiles/SoapySDR.dir/Factory.cpp.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
/root/rtl_433/src/SoapySDR/lib/Device.cpp:511:21: warning: 'virtual SoapySDR::RangeList SoapySDR::Device::getSampleRateRange(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::RangeList SoapySDR::Device::getSampleRateRange(const int direction, const size_t channel) const
                     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:525:6: warning: 'virtual void SoapySDR::Device::setBandwidth(int, size_t, double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setBandwidth(const int, const size_t, const double)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:530:8: warning: 'virtual double SoapySDR::Device::getBandwidth(int, size_t) const' redeclared without dllimport attribute after being referenced with dll linkage
 double SoapySDR::Device::getBandwidth(const int, const size_t) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:535:21: warning: 'virtual std::vector<double> SoapySDR::Device::listBandwidths(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<double> SoapySDR::Device::listBandwidths(const int, const size_t) const
                     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:540:21: warning: 'virtual SoapySDR::RangeList SoapySDR::Device::getBandwidthRange(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::RangeList SoapySDR::Device::getBandwidthRange(const int direction, const size_t channel) const
                     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:554:6: warning: 'virtual void SoapySDR::Device::setMasterClockRate(double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setMasterClockRate(const double)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:559:8: warning: 'virtual double SoapySDR::Device::getMasterClockRate() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 double SoapySDR::Device::getMasterClockRate(void) const
        ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:564:21: warning: 'virtual SoapySDR::RangeList SoapySDR::Device::getMasterClockRates() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::RangeList SoapySDR::Device::getMasterClockRates(void) const
                     ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:569:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listClockSources() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listClockSources(void) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:574:6: warning: 'virtual void SoapySDR::Device::setClockSource(const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setClockSource(const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:579:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getClockSource() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getClockSource(void) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:588:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listTimeSources() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listTimeSources(void) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:593:6: warning: 'virtual void SoapySDR::Device::setTimeSource(const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setTimeSource(const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:598:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::getTimeSource() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::getTimeSource(void) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:603:6: warning: 'virtual bool SoapySDR::Device::hasHardwareTime(const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 bool SoapySDR::Device::hasHardwareTime(const std::string &) const
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:608:11: warning: 'virtual long long int SoapySDR::Device::getHardwareTime(const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 long long SoapySDR::Device::getHardwareTime(const std::string &) const
           ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:613:6: warning: 'virtual void SoapySDR::Device::setHardwareTime(long long int, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::setHardwareTime(const long long timeNs, const std::string &what)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:618:6: warning: 'virtual void SoapySDR::Device::setCommandTime(long long int, const string&)' redeclared without dllimport attribute after being referenced with dll linkage
 void SoapySDR::Device::setCommandTime(const long long, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:626:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listSensors() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listSensors(void) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:631:19: warning: 'virtual SoapySDR::ArgInfo SoapySDR::Device::getSensorInfo(const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::ArgInfo SoapySDR::Device::getSensorInfo(const std::string &) const
                   ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:636:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::readSensor(const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::readSensor(const std::string &) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:641:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listSensors(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listSensors(const int, const size_t) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:646:19: warning: 'virtual SoapySDR::ArgInfo SoapySDR::Device::getSensorInfo(int, size_t, const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::ArgInfo SoapySDR::Device::getSensorInfo(const int, const size_t, const std::string &) const
                   ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:651:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::readSensor(int, size_t, const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::readSensor(const int, const size_t, const std::string &) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:659:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listRegisterInterfaces() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listRegisterInterfaces(void) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:664:6: warning: 'virtual void SoapySDR::Device::writeRegister(const string&, unsigned int, unsigned int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeRegister(const std::string &, const unsigned addr, const unsigned value)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:669:10: warning: 'virtual unsigned int SoapySDR::Device::readRegister(const string&, unsigned int) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 unsigned SoapySDR::Device::readRegister(const std::string &, const unsigned addr) const
          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:674:6: warning: 'virtual void SoapySDR::Device::writeRegister(unsigned int, unsigned int)' redeclared without dllimport attribute after being referenced with dll linkage
 void SoapySDR::Device::writeRegister(const unsigned, const unsigned)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:679:10: warning: 'virtual unsigned int SoapySDR::Device::readRegister(unsigned int) const' redeclared without dllimport attribute after being referenced with dll linkage
 unsigned SoapySDR::Device::readRegister(const unsigned) const
          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:684:6: warning: 'virtual void SoapySDR::Device::writeRegisters(const string&, unsigned int, const std::vector<unsigned int>&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeRegisters(const std::string &, const unsigned, const std::vector<unsigned> &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:689:23: warning: 'virtual std::vector<unsigned int> SoapySDR::Device::readRegisters(const string&, unsigned int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<unsigned> SoapySDR::Device::readRegisters(const std::string &, const unsigned, size_t length) const
                       ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:697:23: warning: 'virtual SoapySDR::ArgInfoList SoapySDR::Device::getSettingInfo() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::ArgInfoList SoapySDR::Device::getSettingInfo(void) const
                       ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:702:6: warning: 'virtual void SoapySDR::Device::writeSetting(const string&, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeSetting(const std::string &, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:707:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::readSetting(const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::readSetting(const std::string &) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:712:23: warning: 'virtual SoapySDR::ArgInfoList SoapySDR::Device::getSettingInfo(int, size_t) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 SoapySDR::ArgInfoList SoapySDR::Device::getSettingInfo(const int, const size_t) const
                       ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:717:6: warning: 'virtual void SoapySDR::Device::writeSetting(int, size_t, const string&, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeSetting(const int, const size_t, const std::string &, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:722:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::readSetting(int, size_t, const string&) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::readSetting(const int, const size_t, const std::string &) const
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:730:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listGPIOBanks() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listGPIOBanks(void) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:735:6: warning: 'virtual void SoapySDR::Device::writeGPIO(const string&, unsigned int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeGPIO(const std::string &, const unsigned)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:740:6: warning: 'virtual void SoapySDR::Device::writeGPIO(const string&, unsigned int, unsigned int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeGPIO(const std::string &bank, const unsigned value, const unsigned mask)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:748:10: warning: 'virtual unsigned int SoapySDR::Device::readGPIO(const string&) const' redeclared without dllimport attribute after being referenced with dll linkage
 unsigned SoapySDR::Device::readGPIO(const std::string &) const
          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:753:6: warning: 'virtual void SoapySDR::Device::writeGPIODir(const string&, unsigned int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeGPIODir(const std::string &, const unsigned)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:758:6: warning: 'virtual void SoapySDR::Device::writeGPIODir(const string&, unsigned int, unsigned int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeGPIODir(const std::string &bank, const unsigned dir, const unsigned mask)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:766:10: warning: 'virtual unsigned int SoapySDR::Device::readGPIODir(const string&) const' redeclared without dllimport attribute after being referenced with dll linkage
 unsigned SoapySDR::Device::readGPIODir(const std::string &) const
          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:775:6: warning: 'virtual void SoapySDR::Device::writeI2C(int, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeI2C(const int, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:780:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::readI2C(int, size_t)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::readI2C(const int, const size_t)
             ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:788:10: warning: 'virtual unsigned int SoapySDR::Device::transactSPI(int, unsigned int, size_t)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 unsigned SoapySDR::Device::transactSPI(const int, const unsigned, const size_t)
          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:796:26: warning: 'virtual std::vector<std::__cxx11::basic_string<char> > SoapySDR::Device::listUARTs() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::vector<std::string> SoapySDR::Device::listUARTs(void) const
                          ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:801:6: warning: 'virtual void SoapySDR::Device::writeUART(const string&, const string&)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void SoapySDR::Device::writeUART(const std::string &, const std::string &)
      ^
/root/rtl_433/src/SoapySDR/lib/Device.cpp:806:13: warning: 'virtual std::__cxx11::string SoapySDR::Device::readUART(const string&, long int) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 std::string SoapySDR::Device::readUART(const std::string &, const long) const
             ^
make[1]: *** [lib/CMakeFiles/SoapySDR.dir/all] Error 2
make: *** [all] Error 2

Kungergely avatar Apr 17 '19 19:04 Kungergely

Moreover I've tried to use all sorts of gimmicks for telling g++ to enable C++11 support (via passing -std=c++0x or -std=c++11 to g++), but to no avai. The errors have always remained the same.

Kungergely avatar Apr 17 '19 19:04 Kungergely

'recursive_mutex' in namespace 'std' does not name a type

From the looks of the errors, its flat out just missing important C++ features in the development headers.

I saw this thread, and its somewhat old, but very reminiscent of the problem: https://stackoverflow.com/questions/14191566/c-mutex-in-namespace-std-does-not-name-a-type

Perhaps there is a checkbox for thread support package when installing mingw

guruofquality avatar Apr 17 '19 19:04 guruofquality

It looks like the only know work around is to use -

https://github.com/meganz/mingw-std-threads

and that is not so hot.

righthalfplane avatar Dec 09 '19 21:12 righthalfplane

and that is not so hot.

Actually including this seems to be literally painful in the Travis/Docker build automation scheme I've set up. I'll see if I can make it work using some well-placed loops, sed commands and stuff. Thanks for the find :)

Kungergely avatar Dec 09 '19 21:12 Kungergely

From the looks of the errors, its flat out just missing important C++ features in the development headers.

Yeah.

Perhaps there is a checkbox for thread support package when installing mingw

Unfortunately that would be of little help when I'm using Linux to make the SoapySDR builds for Windows.

Kungergely avatar Dec 09 '19 21:12 Kungergely

Using MSYS2 and mingw64.exe on windows 7, I was able to build SoapySDR and a working version of SoapySDRUtil.exe. With the cmake option -

cmake -G"MSYS Makefiles" ../

from the directory SoapySDR/build. I tied to install the support for NetSDR, but that failed. Maybe the driver for the device you want will work.

If you are using MinGW, I would think that you would use -

cmake -G"MinGW Makefiles" ../

as your option.

righthalfplane avatar Dec 10 '19 15:12 righthalfplane

I got HackRF One to install under MSYS2 and played some stations with it.

righthalfplane avatar Dec 14 '19 15:12 righthalfplane

Using MSYS2 and mingw64.exe on windows 7

I need to build this on Linux, not Windows. Automating anything like this is a nightmare on Windows, besides, I really don't feel like redoing the whole build process for Windows.

Kungergely avatar Dec 14 '19 21:12 Kungergely

Are you trying to compile programs for windows on a linux machine or what ?

righthalfplane avatar Dec 24 '19 22:12 righthalfplane

I already am compiling rtl_433 for Windows, x86_64, 32-bit and 64-bit ARM Linux on Linux machines, yeah. Currently the Linux builds have both SoapySDR and rtl-sdr compiled in, but the Windows build has only the latter.

Kungergely avatar Dec 24 '19 22:12 Kungergely