2

我第一次尝试使用 boost 库。使用带有 CDT 的环境 Eclipse 4.3 和编译器 gcc 3.4 和 boost 1.53。

我正在浏览各种网站以查找有关如何设置 boost 的信息,但它似乎不起作用。当我编译试图包含 boost/asio.hpp 我得到错误:

You must add -D__USE_W32_SOCKETS to your compiler options

但是,我不想使用 windows 套接字,我想使用 posix,所以我真的不知道出了什么问题。由于我需要稍后在 HP-UX 上运行该项目,因此我不想使用特定于 Windows 的内容。如果我现在使用 windows 套接字,该程序以后是否可以轻松移植到 Unix,或者是否所有细节都封装在 boost 中,而且我不必关心?

我使用 FOREACH 循环测试了一个简单的测试程序,以确认 boost 本身可以工作,情况就是这样。

我还发现了这个:https ://svn.boost.org/trac/boost/ticket/7881 那么这是否意味着目前不支持这个问题,或者我做错了什么?

4

2 回答 2

2

库似乎不支持您尝试做的事情,文档在支持的平台下说明了以下内容

以下平台和编译器已经过测试:

  • Win32 和 Win64 使用 Visual C++ 7.1 和 Visual C++ 8.0。
  • Win32 使用 MinGW。
  • Win32 使用 Cygwin。(必须定义 __USE_W32_SOCKETS。
  • 使用 g++ 3.3 或更高版本的 Linux(2.4 或 2.6 内核)。
  • Solaris 使用 g++ 3.3 或更高版本。
  • 使用 g++ 3.3 或更高版本的 Mac OS X 10.4。

额外的重点是我的。如果这不可能,您可以尝试链接票证中建议的补丁。但是,通过查看源代码,我看到了几次出现,#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)因此简单地打补丁io_service.hpp可以解决任何问题并不明显。您可以尝试添加-U__CYGWIN__到您的CXXFLAGS.,尽管 cygwin 工具链可能不喜欢这样。

完全披露:我不是 Windows 人,所以希望其他人能加入进来。

于 2013-04-29T20:16:34.613 回答
1

Cygwin 发行版中的libboost-devel软件包包括在 Boost.Asio 中的 Cygwin 上不使用 Winsock 的补丁。我建议将它与 gcc4 包结合使用,这些包提供了最新版本的 GCC。

于 2013-05-19T23:58:49.133 回答