【问题标题】:Can't compile using MinGW, Eclipse and Boost (1.50.0)无法使用 MinGW、Eclipse 和 Boost (1.50.0) 进行编译
【发布时间】:2013-10-14 14:41:16
【问题描述】:

我正在使用 MinGW、Eclipse 和 Boost 进行一些 TCP/IP 编程。通常我使用 Visual Studio,但对于这个项目,我使用的是 Eclipse 和 MinGW。我已经运行了标头测试程序,并且运行良好。

当我想构建一个包含 asio 的项目时,我遇到了引用错误。

在 Eclipse 的 MinGW 设置下,我已经包含了库,在 C++ 下,我添加了包含搜索路径。这些库是静态构建的。

我在网上看到我还需要包含编译器标志-lws2_32。我已经在 Eclipse 中的杂项中的 MinGW 设置下完成了此操作。

我通过以下方式包含asio

#include <boost/regex.hpp>
#include <boost/asio.hpp>

我得到的错误如下:

undefined reference to `WSACleanup@0'

谁能帮我解决这个问题?

致以诚挚的问候!

【问题讨论】:

    标签: eclipse gcc boost linker mingw


    【解决方案1】:

    libws2_32.a 显然没有正确链接。我怀疑在杂项中添加链接开关(例如-l)是错误的做法。据我记得,在 Paths and Symbols 部分有 Libraries 选项卡,您可以在其中简单地添加 ws2_32(不带任何标志)并让 Eclipse 完成调用 GCC 的工作带有适当的开关。

    【讨论】:

    • 谢谢你的建议解决了它!现在只需要从 boost 添加系统库,因为我收到以下错误:boost::system::system_category()。我现在要这样做,随时通知你。再次感谢!
    • 刚刚添加了系统、ecexption 和信号库。并且没有错误。我仍然有一些与我认为的 winsock 有关的警告(-wall flag 已打开)。 #warning 假设 _WIN32_WINNT=0x0501(即 Windows XP 目标),#warning 例如,在编译器命令行中添加 -D_WIN32_WINNT=0x0501,#warning 请适当定义 _WIN32_WINNT 或 _WIN32_WINDOWS。如何解决?
    • 好吧,照它说的做,在定义中添加_WIN32_WINNT=0x0501
    • 又是Paths and Symbols中的某个标签,仔细看吧。
    • 谢谢!我将 _WIN32_WINNT 放在符号下,警告消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多