嗨,我想在C中为windows构建一个应用程序,我用linux编程,用gcc和mingw-w64编译代码。
我尝试了一个简单的程序输出和输入,它可以很好地在windows上工作。
但是,我想使用套接字连接到服务器。
所以我在google上搜索并找到了这个教程http://beej.us/guide/bgnet/output/html/multipage/intro.html#audience
它说,在windows中,我们需要包含winsock并运行一些命令,所以我这样做了:
#include <winsock.h>
int main(void)
{
WSADATA wsaData;
printf("Hello! This is a test prgoram.\n");
if (WSAStartup(MAKEWORD(1,1), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
}
}但是,当我试图编译它时,我得到:
对`__imp_WSAStartup‘collect2的未定义引用:错误: ld返回1退出状态
在命令行中,我运行的全部内容是:
x86_64-w64-mingw32-gcc try.c -o a.exe那我该怎么办?如果我在linux中编译,我不需要winsock库?怎么解决这个问题?
谢谢
发布于 2017-05-27 21:36:02
如果您查看WSAStartup手册并向下滚动,您将发现它是在哪个库中定义的:Ws2_32.lib
这是一个“导入库”,是windows程序使用相应DLL时需要链接的存根。MinGW包括所有标准的windows平台导入库。所以,您只需使用-lws2_32链接它。
https://stackoverflow.com/questions/44221696
复制相似问题