未定义的引用select@20在C中
我试图给用户一段时间来进入移动,我发现了一个教程,其中有未定义的引用select@20在C中,c,input,linker-errors,C,Input,Linker Errors,我试图给用户一段时间来进入移动,我发现了一个教程,其中有fflush()和select(),但是,有一个错误: 未定义的引用select@20 我的代码的精简版本: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <windows.h> #include <time.h> #include <sys/time.h> #include &l
fflush()
和select()
,但是,有一个错误:
未定义的引用select@20
我的代码的精简版本:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <windows.h>
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
int main() {
struct timeval tmo;
fd_set readfds;
for (int x = 0;;x++) {
do {
printf("\nEnter a move: ");
fflush(stdout);
/* wait only 5 seconds for user input */
FD_ZERO(&readfds);
FD_SET(0, &readfds);
tmo.tv_sec = 5;
tmo.tv_usec = 0;
switch (select(1, &readfds, NULL, NULL, &tmo)) {
case -1:
err(1, "select");
break;
case 0:
printf("User didn't give an input.");
return (1);
}
scanf(" %c", &userInput);
translateUserInput(userInput, &dx, &dy);
}
while (!isDirectionOk(field, snake, dx, dy));
}
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(){
结构timeval-tmo;
fd_设置读取FDS;
对于(int x=0;x++){
做{
printf(“\n输入移动:”);
fflush(stdout);
/*只需等待5秒钟,用户即可输入*/
FD_零(&readfds);
FD_集(0,&readfds);
tmo.tv_sec=5;
tmo.tv_usec=0;
开关(选择(1,&readfds,NULL,NULL,&tmo)){
案例1:
错误(1,“选择”);
打破
案例0:
printf(“用户没有提供输入。”);
申报表(1);
}
scanf(“%c”、&userInput);
translateUserInput(用户输入、dx和dy);
}
而(!isDirectionOk(field,snake,dx,dy));
}
}
顺便说一下,我在Windows上。您需要链接
Ws2_32.lib
如果您使用的是MinGW,则该库称为libwsock32.a
对于使用Code::Blocks的用户,请转到Project->Build Options->Linker Settings->Add->libwsock32.a
其中一个
#include
或#include
应生成错误。您使用的是哪种编译器/版本?它是通过代码块预安装的编译器。我查看了安装文件夹,找到了适用于Windows GCC 5系列MinGW 32位版本的TDM-GCC编译器套件。是吗?这是一个链接器问题,您可能需要链接到Ws2_32.lib
。已解决。(对于任何使用MinGW的人,Ws2_32.lib被称为libwsock32.a,这里特别针对代码块用户,您需要转到Project->Build Options->add->libwsock32.a)所以请写一个答案并标记它。这就是SO的工作方式,也适用于自我回答的问题。