繁体   English   中英

用Cygwin增加asio错误

[英]Boost asio error with Cygwin

我在尝试编译使用boost.asio的程序时遇到了一些奇怪的错误。 我只是下载/编译了库,所以可能在那期间出现了错误? 我在windows上使用gcc和cygwin

该程序:

#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;
}


尝试编译给我这个错误信息:

In file included from /usr/local/include/boost/asio/async_result.hpp:18:0,
                 from /usr/local/include/boost/asio.hpp:20,
                 from test.cpp:27:
/usr/local/include/boost/asio/detail/config.hpp:566:5: warning: #warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. [-Wcpp]
 #   warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.
     ^
/usr/local/include/boost/asio/detail/config.hpp:567:5: warning: #warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line. [-Wcpp]
 #   warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line.
     ^
/usr/local/include/boost/asio/detail/config.hpp:568:5: warning: #warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target). [-Wcpp]
 #   warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
     ^
/usr/local/include/boost/asio/detail/config.hpp:592:5: error: #error You must add -D__USE_W32_SOCKETS to your compiler options.
 #   error You must add -D__USE_W32_SOCKETS to your compiler options.
     ^
In file included from /usr/local/include/boost/asio/detail/impl/posix_tss_ptr.ipp:24:0,
                 from /usr/local/include/boost/asio/detail/posix_tss_ptr.hpp:76,
                 from /usr/local/include/boost/asio/detail/tss_ptr.hpp:27,
                 from /usr/local/include/boost/asio/detail/call_stack.hpp:20,
                 from /usr/local/include/boost/asio/impl/handler_alloc_hook.ipp:19,
                 from /usr/local/include/boost/asio/handler_alloc_hook.hpp:80,
                 from /usr/local/include/boost/asio/detail/handler_alloc_helpers.hpp:21,
                 from /usr/local/include/boost/asio/detail/bind_handler.hpp:19,
                 from /usr/local/include/boost/asio/detail/wrapped_handler.hpp:18,
                 from /usr/local/include/boost/asio/io_service.hpp:24,
                 from /usr/local/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/local/include/boost/asio/basic_socket.hpp:20,
                 from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /usr/local/include/boost/asio.hpp:21,
                 from test.cpp:27:
/usr/local/include/boost/asio/error.hpp:87:31: error: a function call cannot appear in a constant-expression
       BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE),
                               ^
/usr/local/include/boost/asio/error.hpp:140:31: error: a function call cannot appear in a constant-expression
       BOOST_ASIO_NATIVE_ERROR(ERROR_OUTOFMEMORY),
                               ^
/usr/local/include/boost/asio/error.hpp:145:31: error: a function call cannot appear in a constant-expression
       BOOST_ASIO_NATIVE_ERROR(ERROR_ACCESS_DENIED),
                               ^
/usr/local/include/boost/asio/error.hpp:153:31: error: a function call cannot appear in a constant-expression
       BOOST_ASIO_NATIVE_ERROR(ERROR_BAD_UNIT),
                               ^
/usr/local/include/boost/asio/error.hpp:164:31: error: a function call cannot appear in a constant-expression
       BOOST_ASIO_NATIVE_ERROR(ERROR_OPERATION_ABORTED),
                               ^
/usr/local/include/boost/asio/error.hpp:178:31: error: a function call cannot appear in a constant-expression
       BOOST_ASIO_NATIVE_ERROR(ERROR_RETRY),
                               ^
In file included from /usr/local/include/boost/asio/detail/socket_types.hpp:38:0,
                 from /usr/local/include/boost/asio/detail/impl/winsock_init.ipp:22,
                 from /usr/local/include/boost/asio/detail/winsock_init.hpp:125,
                 from /usr/local/include/boost/asio/io_service.hpp:28,
                 from /usr/local/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/local/include/boost/asio/basic_socket.hpp:20,
                 from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /usr/local/include/boost/asio.hpp:21,
                 from test.cpp:27:
/usr/include/w32api/winsock2.h:1004:68: error: conflicting declaration of C function ‘int gethostname(char*, int)’
   WINSOCK_API_LINKAGE int WSAAPI gethostname(char *name,int namelen);
                                                                    ^
In file included from /usr/include/wchar.h:4:0,
                 from /usr/lib/gcc/x86_64-pc-cygwin/5.3.0/include/c++/cwchar:44,
                 from /usr/lib/gcc/x86_64-pc-cygwin/5.3.0/include/c++/bits/postypes.h:40,
                 from /usr/lib/gcc/x86_64-pc-cygwin/5.3.0/include/c++/iosfwd:40,
                 from /usr/lib/gcc/x86_64-pc-cygwin/5.3.0/include/c++/ios:38,
                 from /usr/lib/gcc/x86_64-pc-cygwin/5.3.0/include/c++/ostream:38,
                 from /usr/lib/gcc/x86_64-pc-cygwin/5.3.0/include/c++/iostream:39,
                 from test.cpp:26:
/usr/include/sys/unistd.h:249:6: note: previous declaration ‘int gethostname(char*, size_t)’
  int _EXFUN(gethostname, (char *__name, size_t __len));
      ^
In file included from /usr/local/include/boost/asio/detail/winsock_init.hpp:125:0,
                 from /usr/local/include/boost/asio/io_service.hpp:28,
                 from /usr/local/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/local/include/boost/asio/basic_socket.hpp:20,
                 from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /usr/local/include/boost/asio.hpp:21,
                 from test.cpp:27:
/usr/local/include/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)’:
/usr/local/include/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)
                                            ^
/usr/local/include/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);
                                             ^
/usr/local/include/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&)’:
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp:46:44: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedIncrement(volatile int*)’
   if (::InterlockedIncrement(&d.init_count_) == 1)
                                            ^
/usr/local/include/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);
                                        ^
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp: In static member function ‘static void boost::asio::detail::winsock_init_base::cleanup(boost::asio::detail::winsock_init_base::data&)’:
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp:54:44: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedDecrement(volatile int*)’
   if (::InterlockedDecrement(&d.init_count_) == 0)
                                            ^
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp: In static member function ‘static void boost::asio::detail::winsock_init_base::manual_cleanup(boost::asio::detail::winsock_init_base::data&)’:
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp:62:40: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedDecrement(volatile int*)’
   ::InterlockedDecrement(&d.init_count_);
                                        ^
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp: In static member function ‘static void boost::asio::detail::winsock_init_base::throw_on_error(boost::asio::detail::winsock_init_base::data&)’:
/usr/local/include/boost/asio/detail/impl/winsock_init.ipp:67:55: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   long result = ::InterlockedExchangeAdd(&d.result_, 0);
                                                       ^
In file included from /usr/local/include/boost/asio/impl/io_service.hpp:69:0,
                 from /usr/local/include/boost/asio/io_service.hpp:767,
                 from /usr/local/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/local/include/boost/asio/basic_socket.hpp:20,
                 from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /usr/local/include/boost/asio.hpp:21,
                 from test.cpp:27:
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp: In member function ‘bool boost::asio::detail::win_iocp_io_service::stopped() const’:
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp:84:49: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
     return ::InterlockedExchangeAdd(&stopped_, 0) != 0;
                                                 ^
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp: In member function ‘void boost::asio::detail::win_iocp_io_service::reset()’:
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp:90:39: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
     ::InterlockedExchange(&stopped_, 0);
                                       ^
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp: In member function ‘void boost::asio::detail::win_iocp_io_service::work_started()’:
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp:96:46: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedIncrement(volatile int*)’
     ::InterlockedIncrement(&outstanding_work_);
                                              ^
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp: In member function ‘void boost::asio::detail::win_iocp_io_service::work_finished()’:
/usr/local/include/boost/asio/detail/win_iocp_io_service.hpp:102:50: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedDecrement(volatile int*)’
     if (::InterlockedDecrement(&outstanding_work_) == 0)
                                                  ^
In file included from /usr/local/include/boost/asio/detail/win_iocp_io_service.hpp:310:0,
                 from /usr/local/include/boost/asio/impl/io_service.hpp:69,
                 from /usr/local/include/boost/asio/io_service.hpp:767,
                 from /usr/local/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/local/include/boost/asio/basic_socket.hpp:20,
                 from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /usr/local/include/boost/asio.hpp:21,
                 from test.cpp:27:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.hpp: In member function ‘void boost::asio::detail::win_iocp_io_service::schedule_timer(boost::asio::detail::timer_queue<Time_Traits>&, const typename Time_Traits::time_type&, typename boost::asio::detail::timer_queue<Time_Traits>::per_timer_data&, boost::asio::detail::wait_op*)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.hpp:94:45: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
                                             ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.hpp: In member function ‘std::size_t boost::asio::detail::win_iocp_io_service::cancel_timer(boost::asio::detail::timer_queue<Time_Traits>&, typename boost::asio::detail::timer_queue<Time_Traits>::per_timer_data&, std::size_t)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.hpp:114:45: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
                                             ^
In file included from /usr/local/include/boost/asio/detail/win_iocp_io_service.hpp:312:0,
                 from /usr/local/include/boost/asio/impl/io_service.hpp:69,
                 from /usr/local/include/boost/asio/io_service.hpp:767,
                 from /usr/local/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/local/include/boost/asio/basic_socket.hpp:20,
                 from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /usr/local/include/boost/asio.hpp:21,
                 from test.cpp:27:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::timer_thread_function::operator()()’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:51:63: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
     while (::InterlockedExchangeAdd(&io_service_->shutdown_, 0) == 0)
                                                               ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:56:66: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
         ::InterlockedExchange(&io_service_->dispatch_required_, 1);
                                                                  ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘virtual void boost::asio::detail::win_iocp_io_service::shutdown_service()’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:93:38: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
   ::InterlockedExchange(&shutdown_, 1);
                                      ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:102:56: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   while (::InterlockedExchangeAdd(&outstanding_work_, 0) > 0)
                                                        ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:112:50: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedDecrement(volatile int*)’
         ::InterlockedDecrement(&outstanding_work_);
                                                  ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:125:50: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedDecrement(volatile int*)’
         ::InterlockedDecrement(&outstanding_work_);
                                                  ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘size_t boost::asio::detail::win_iocp_io_service::run(boost::system::error_code&)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:153:53: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
                                                     ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘size_t boost::asio::detail::win_iocp_io_service::run_one(boost::system::error_code&)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:172:53: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
                                                     ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘size_t boost::asio::detail::win_iocp_io_service::poll(boost::system::error_code& ’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:187:53: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
                                                     ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘size_t boost::asio::detail::win_iocp_io_service::poll_one(boost::system::error_code&)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:206:53: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchangeAdd(volatile int*, int)’
   if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
                                                     ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::stop()’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:221:41: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
   if (::InterlockedExchange(&stopped_, 1) == 0)
                                         ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:223:53: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
     if (::InterlockedExchange(&stop_event_posted_, 1) == 0)
                                                     ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::post_deferred_completion(boost::asio::detail::win_iocp_operation*)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:247:49: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
     ::InterlockedExchange(&dispatch_required_, 1);
                                                 ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::post_deferred_completions(boost::asio::detail::op_queue<boost::asio::detail::win_iocp_operation>&)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:268:51: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
       ::InterlockedExchange(&dispatch_required_, 1);
                                                   ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::abandon_operations(boost::asio::detail::op_queue<boost::asio::detail::win_iocp_operation>&)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:279:46: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedDecrement(volatile int*)’
     ::InterlockedDecrement(&outstanding_work_);
                                              ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::on_pending(boost::asio::detail::win_iocp_operation*)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:286:53: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedCompareExchange(volatile int*, int, int)’
   if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1)
                                                     ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:295:51: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
       ::InterlockedExchange(&dispatch_required_, 1);
                                                   ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::on_completion(boost::asio::detail::win_iocp_operation*, DWORD, DWORD)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:319:49: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
     ::InterlockedExchange(&dispatch_required_, 1);
                                                 ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘void boost::asio::detail::win_iocp_io_service::on_completion(boost::asio::detail::win_iocp_operation*, const boost::system::error_code&, DWORD)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:341:49: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
     ::InterlockedExchange(&dispatch_required_, 1);
                                                 ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp: In member function ‘size_t boost::asio::detail::win_iocp_io_service::do_one(bool, boost::system::error_code&)’:
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:350:63: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedCompareExchange(volatile int*, int, int)’
     if (::InterlockedCompareExchange(&dispatch_required_, 0, 1) == 1)
                                                               ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:399:57: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedCompareExchange(volatile int*, int, int)’
       if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1)
                                                         ^
/usr/local/include/boost/asio/detail/impl/win_iocp_io_service.ipp:434:51: error: cannot convert ‘long int*’ to ‘volatile int*’ for argument ‘1’ to ‘int _InterlockedExchange(volatile int*, int)’
       ::InterlockedExchange(&stop_event_posted_, 0);


错误会持续一段时间,但是SO会限制帖子中的字符数
我一直坚持这一点,我不知道该怎么办。 任何帮助,将不胜感激!


编辑:我编译了添加为kenba建议的Windows标志。 然而,出现相同的错误,顶部没有这些警告。
也许相关:我测试了几个其他Boost库并且它们工作正常,问题似乎与asio有关。

asio需要知道它正在构建的Windows版本,因此您需要设置宏_WIN32_WINNT ,请参阅使用Windows标头 例如,将以下内容添加到compile命令NTDDI_VERSION_WIN32_WINNT设置为Windows _WIN32_WINNT所需的值:

-DNTDDI_VERSION=NTDDI_WIN7 -D_WIN32_WINNT=_WIN32_WINNT_WIN7

另请注意,尽管boost asio本身是一个仅头文件库,但它需要链接到boost system库,因此link命令将需要以下内容:

-LC:\boost\boost_1_60_0\stage\lib -lboost_system-mgw49-mt-1_60

取决于您构建boost库的位置以及您正在使用的boostgcc / mingw版本。

我能够通过删除我的boost版本来修复问题,并使用cygwin安装程序来构建它。 不确定为什么会这样,但对于任何使用cygwin和boost的人,我建议使用安装程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM