Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost ASIO示例未构建_C++_Boost_Boost Asio - Fatal编程技术网

C++ Boost ASIO示例未构建

C++ Boost ASIO示例未构建,c++,boost,boost-asio,C++,Boost,Boost Asio,我在试着做第一个动作。我使用的是Boost 1.60、CLion 1.2和Cygwin 使用C++代码:>P/> // // timer.cpp // ~~~~~~~~~ // // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, V

我在试着做第一个动作。我使用的是Boost 1.60、CLion 1.2和Cygwin

<强>使用C++代码:>P/>

    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    #add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501 -lboost_system -lws2_32)
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501)



    set(Boost_INCLUDE_DIR "D:\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
error: '__MSABI_LONG' was not declared in this scope        BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE)
    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //
    #define __MSABI_LONG(x) x

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedIncrement(volatile int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:40:45: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, result);
                                                 ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::manual_startup(boost::asio::detail::winsock_init_base::data&)':

       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:48:40: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, 0);
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0A00 -lboost_system -lws2_32)



    set(Boost_INCLUDE_DIR "D:\\AdrianMattocks\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: [Kno matching function for call to '_InterlockedIncrement(long int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: invalid conversion from 'long int*' to 'volatile long unsigned int*' [-fpermissive]
       if (::InterlockedIncrement(&d.init_count_) == 1)
我得到以下错误:

    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    #add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501 -lboost_system -lws2_32)
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501)



    set(Boost_INCLUDE_DIR "D:\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
error: '__MSABI_LONG' was not declared in this scope        BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE)
    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //
    #define __MSABI_LONG(x) x

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedIncrement(volatile int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:40:45: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, result);
                                                 ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::manual_startup(boost::asio::detail::winsock_init_base::data&)':

       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:48:40: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, 0);
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0A00 -lboost_system -lws2_32)



    set(Boost_INCLUDE_DIR "D:\\AdrianMattocks\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: [Kno matching function for call to '_InterlockedIncrement(long int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: invalid conversion from 'long int*' to 'volatile long unsigned int*' [-fpermissive]
       if (::InterlockedIncrement(&d.init_count_) == 1)
此错误在不同的宏上重复多次

因此,使用此选项,代码将更改为:

C++

    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //
    #define __MSABI_LONG(x)

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
我得到以下错误

error: expected primary-expression before ',' token BOOST_ASIO_NATIVE_ERROR(EPIPE))
我也多次得到这个

编辑1

如果我将代码更改为:

    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    #add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501 -lboost_system -lws2_32)
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501)



    set(Boost_INCLUDE_DIR "D:\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
error: '__MSABI_LONG' was not declared in this scope        BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE)
    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //
    #define __MSABI_LONG(x) x

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedIncrement(volatile int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:40:45: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, result);
                                                 ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::manual_startup(boost::asio::detail::winsock_init_base::data&)':

       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:48:40: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, 0);
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0A00 -lboost_system -lws2_32)



    set(Boost_INCLUDE_DIR "D:\\AdrianMattocks\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: [Kno matching function for call to '_InterlockedIncrement(long int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: invalid conversion from 'long int*' to 'volatile long unsigned int*' [-fpermissive]
       if (::InterlockedIncrement(&d.init_count_) == 1)
编辑2

更改CMake代码,以在编译器选项中指定正确的操作系统:

    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    #add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501 -lboost_system -lws2_32)
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501)



    set(Boost_INCLUDE_DIR "D:\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
error: '__MSABI_LONG' was not declared in this scope        BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE)
    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //
    #define __MSABI_LONG(x) x

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedIncrement(volatile int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:40:45: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, result);
                                                 ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::manual_startup(boost::asio::detail::winsock_init_base::data&)':

       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:48:40: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, 0);
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0A00 -lboost_system -lws2_32)



    set(Boost_INCLUDE_DIR "D:\\AdrianMattocks\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: [Kno matching function for call to '_InterlockedIncrement(long int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: invalid conversion from 'long int*' to 'volatile long unsigned int*' [-fpermissive]
       if (::InterlockedIncrement(&d.init_count_) == 1)
我得到了这个错误(由于尺寸限制,这只是一个样本,但这些错误重复了很多次):

    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    #add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501 -lboost_system -lws2_32)
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501)



    set(Boost_INCLUDE_DIR "D:\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
error: '__MSABI_LONG' was not declared in this scope        BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE)
    //
    // timer.cpp
    // ~~~~~~~~~
    //
    // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
    //
    // Distributed under the Boost Software License, Version 1.0. (See accompanying
    // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    //
    #define __MSABI_LONG(x) x

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>

    int main()
    {
        boost::asio::io_service io;

        boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
        t.wait();

        std::cout << "Hello, world!" << std::endl;

        return 0;
    }
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedIncrement(volatile int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:40:45: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, result);
                                                 ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::manual_startup(boost::asio::detail::winsock_init_base::data&)':

       if (::InterlockedIncrement(&d.init_count_) == 1)
                                                ^
    D:/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:48:40: error: cannot convert 'long int*' to 'volatile int*' for argument '1' to 'int _InterlockedExchange(volatile int*, int)'
         ::InterlockedExchange(&d.result_, 0);
    cmake_minimum_required(VERSION 3.3)
    project(Test1)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    add_compile_options(-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0A00 -lboost_system -lws2_32)



    set(Boost_INCLUDE_DIR "D:\\AdrianMattocks\\Downloads\\boost_1_60_0\\boost_1_60_0")

    find_package(Boost)
    if (Boost_FOUND)
        include_directories(${Boost_INCLUDE_DIR})
    endif ()


    set(SOURCE_FILES main.cpp)
    add_executable(Test1 ${SOURCE_FILES})
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp: In static member function 'static void boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: [Kno matching function for call to '_InterlockedIncrement(long int*)'
       if (::InterlockedIncrement(&d.init_count_) == 1)
    D:/Malachi/Downloads/boost_1_60_0/boost_1_60_0/boost/asio/detail/impl/winsock_init.ipp:36:44: error: invalid conversion from 'long int*' to 'volatile long unsigned int*' [-fpermissive]
       if (::InterlockedIncrement(&d.init_count_) == 1)

如何修复此问题?

我也遇到了同样的问题,并设法消除了
“uu MSABI_LONG”未在此范围内声明以及在尝试编译Boost ASIO时出现的类似错误。我已经按照Boost库文档单独下载了Boost。修复错误的过程非常简单:

  • 删除编译器路径中对Boost库的所有引用,并包含选项
  • 运行并删除以前出现的任何Boost库
  • 重新运行Cygwin安装程序并从安装程序中安装Boost库(您可以搜索Boost并有选择地安装所有感兴趣的软件包)
  • 重新启动IDE
因此,Boost由Cygwin“处理”,我在再次编译时没有任何错误


希望这有帮助

再看一遍答案(它被错误地突出显示)<代码>长(x)x
。我不知道这是否有效。谢谢你的帮助。错过了“x”:-|不定义像
\u USE\u W32\u SOCKETS
\u WIN32\u WINNT
这样的东西,只使用默认值,怎么样?@UlrichEckhardt我得到了以下错误:错误:#错误你必须将-D\u USE\u W32\u SOCKETS添加到你的编译器选项中。对于那些后来发现这一点的人,我从来没有用CLion构建过它,所以我回到了VisualStudio2015,它工作得很好。也许这是一个DLL编译的事情,也许是我,我不知道,既然Visual Studio可以工作,那么就不值得花那么多精力去解决它。你帮了我这么多!:)感谢启动我的C++ Boost旅程