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

时间:2015-02-05 12:16:46

标签: c eclipse sockets mingw

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

添加行以创建套接字

SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
Eclipse报告了这个问题:

undefined reference to `socket@12'

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

现在它编译并构建得很好(根据MinGW),但是: 输出文件(以前工作)现在有一个&#34; lib&#34;前缀并且不再可执行(双击弹出的消息后,表示类似&#34;%PATH%\ libprojectname.exe不是有效的win32应用程序&#34;)

我正在使用Eclipse luna 4.4.1,MinGW 4.8.1,Win7 64-Bit。图书馆来自MinGW本身。

我的包括:

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

到目前为止,我试过了:

  • 清理并重建项目
  • 恢复默认值(项目 - &gt;属性 - &gt; C / C ++ - 构建 - &gt;设置)
  • 制作一个新项目(编译好直到我添加库)

1 个答案:

答案 0 :(得分:1)

我想出了一个&#34;解决方法&#34;:如果我在终端/控制台中打开&#34;发布&#34; -folder(由eclipse创建)并使用

重新编译文件
gcc -o filename.exe main.o -lwsock32

它有效(eclipse在gcc之后使用&#34; -shared&#34;选项,这需要删除)