【问题标题】:MinGW: undefined reference to `__mingw_glob' when using ws2_32 libraryMinGW:使用 ws2_32 库时未定义对“__mingw_glob”的引用
【发布时间】:2015-02-13 13:24:54
【问题描述】:

我正在尝试用 Winsock 函数做一个小测试。我在 Eclipse IDE 中使用 MinGW c++ 编译器。 minggw32-base安装版本是2013072200,eclipse版本是Kepler SR1 Build 20130919-0819

我的程序如下所示(实际上现在什么都没做..):

SocketTest_Server.hpp:

#ifndef SOCKETTEST_SERVER_HPP_
#define SOCKETTEST_SERVER_HPP_

#include <cstdlib>
#include <iostream>
#include <winsock2.h>

#endif /* SOCKETTEST_SERVER_HPP_ */

SocketTest_Server.cpp:

#include "SocketTest_Server.hpp"
using namespace std;

int main(int argc, char *argv[])
{
    cout << "Test" << endl;
    return 0;
}

我通过以下方式添加了库路径:

项目属性 --> C/C++ 常规 --> 路径和符号 --> 库:添加 ws2_32 项目属性 --> C/C++ 常规 --> 路径和符号 --> 库路径:添加 C:/MinGW/lib

现在编译时,我收到以下错误消息(显示为完整的编译命令行):

g++ -O0 -g3 -Wall -c -fmessage-length=0 -o SocketTest_Server.o "..\\SocketTest_Server.cpp"
g++ -LC:/MinGW/lib -o SocketTest_Server.exe SocketTest_Server.o -lws2_32 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/crt2.o:crt1.c:(.text+0x376): undefined reference to `__mingw_glob'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/crt2.o:crt1.c:(.text+0x47d): undefined reference to `__mingw_glob'
collect2.exe: error: ld returned 1 exit status

有人可以告诉我我在这里做错了什么吗?非常感谢!

【问题讨论】:

  • 尝试使用 MinGW-w64(32 位,如果必须)。您可以通过the installer 获取。您应该能够将它安装在与当前 MinGW 安装相同的位置(在首先删除其他工具链之后,可能通过将 C:\MinGW 重命名为 C:\MinGW-backup。然后 Eclipse 不需要更改其设置。
  • 非常感谢@rubenvb,这解决了问题!
  • 等一下,我会把它变成答案;)

标签: c++ eclipse mingw winsock


【解决方案1】:

这个问题可能是由很多原因引起的,但我相信你有一个过时的工具链。

无论如何,您都可以升级到更新和更完整的 MinGW-w64,它在 Windows 上提供 32 位和 64 位工具链(ARM 传入)和 GCC。 你可以通过the installer获取。

在您的情况下,我建议只删除 C:\MinGW 中的所有内容并将 MinGW-w64(32 位)工具链安装在同一位置。 Eclipse 甚至不知道发生了什么,因此不需要更改任何设置。

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多