C 套接字 MinGW 在构建后输出 lib<projectname>.exe(不可执行)
C sockets MinGW outputs lib<projectname>.exe after build (not executable)
在尝试编写通过套接字发送 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++-构建->设置)
- 创建一个新项目(编译正常,直到我添加库)
我想出了一个 "workaround":如果我在 terminal/console 中打开 "Release" 文件夹(由 eclipse 创建)并使用
重新编译文件
gcc -o filename.exe main.o -lwsock32
有效(eclipse 在 gcc 之后使用了一个“-shared”选项,这需要被删除)
在尝试编写通过套接字发送 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++-构建->设置)
- 创建一个新项目(编译正常,直到我添加库)
我想出了一个 "workaround":如果我在 terminal/console 中打开 "Release" 文件夹(由 eclipse 创建)并使用
重新编译文件gcc -o filename.exe main.o -lwsock32
有效(eclipse 在 gcc 之后使用了一个“-shared”选项,这需要被删除)