C 套接字 MinGW 在构建后输出 lib<projectname>.exe(不可执行)

标签 c eclipse sockets mingw

在尝试编写通过套接字发送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>

到目前为止我尝试过:

  • 清理并重建项目
  • 恢复默认值(项目->属性->C/C++-Build->设置)
  • 创建一个新项目(在添加库之前编译正常)

最佳答案

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

gcc -o filename.exe main.o -lwsock32

它可以工作(eclipse 在 gcc 之后使用“-shared”选项,需要将其删除)

关于C 套接字 MinGW 在构建后输出 lib<projectname>.exe(不可执行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28343755/

相关文章:

eclipse - 如何阻止Eclipse要求安装Subversive Connectors

mysql - eclipse dtp mysql 分隔符语句损坏。

当我尝试使用外部 IP 连接到服务器时,Java Socket 超时

C 链表向末尾添加节点

c - 在 C 中分配数组和结构

C程序只工作一部分

java - Eclipse 全天关闭

读/写 NETLINK 套接字会失败吗?

c++ - boost::asio:如何使用 async_accept 接受传入连接?

C 外部变量访问