【问题标题】:C sockets MinGW outputs lib<projectname>.exe after build (not executable)C sockets MinGW 在构建后输出 lib<projectname>.exe(不可执行)
【发布时间】:2015-02-05 12:16:46
【问题描述】:

在尝试编写通过套接字发送 UDP 的 C 程序时,我遇到了以下问题:

添加线后创建套接字

SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);

Eclipse 报告了这个问题:

undefined reference to `socket@12'

显然缺少库,所以我添加了 ws2_32 和 wsock32。

现在它编译和构建得很好(根据 MinGW),但是: 输出文件(以前可以工作)现在有一个“lib”前缀并且不再可执行(双击后会弹出一条消息,上面写着“%PATH%\libprojectname.exe 不是有效的 win32 应用程序”)

我正在使用 Eclipse luna 4.4.1、MinGW 4.8.1、Win7 64 位。库来自 MinGW 本身。

我的包括:

     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     #include <winsock2.h>

到目前为止我尝试过:

  • 清理并重建项目
  • 恢复默认(Project->Properties->C/C++-Build->Settings)
  • 创建一个新项目(在我添加库之前编译正常)

【问题讨论】:

  • 欢迎来到 Stack Overflow!与其编辑您的问题以包含您的解决方案,不如写下此问题的答案,然后将其标记为已接受。

标签: c eclipse sockets mingw


【解决方案1】:

我想出了一个“解决方法”:如果我在终端/控制台中打开“Release”文件夹(由 eclipse 创建)并重新编译文件

gcc -o filename.exe main.o -lwsock32

它有效(eclipse 在 gcc 之后使用“-shared”选项,这需要删除)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多