Re: [問題] gcc編譯出現未定義strupr錯誤

看板LinuxDev作者 (深藍)時間14年前 (2011/11/23 01:38), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《kg3363 (深藍)》之銘言: : 如題~ : 在CentOs使用gcc編譯出現 : updserver.c:(.text+0x2ed): undefined reference to `strupr' : 請問各位高手~該如何解決~感恩~謝謝^^~ 以下是我的原始碼 #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<netdb.h> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #define BUFFER_SIZE 1024 char* strupr(char *orgstr); int main(int argc, char **argv){ int sock,length,fromlen,retval; struct sockaddr_in srvaddr,fromaddr; char fromip[40]; int fromport; char buffer[BUFFER_SIZE]; char echobuf[BUFFER_SIZE]; if(argc<2){ fprintf(stderr,"Usage:%s port\n",argv[1]); exit(1); } sock=socket(PF_INET,SOCK_DGRAM,0); if(sock<0){ fprintf(stderr,"Datagram Socket開啟失敗!!\n",argv[1]); exit(1); } length=sizeof(srvaddr); bzero(&srvaddr,length); srvaddr.sin_family=PF_INET; srvaddr.sin_addr.s_addr=INADDR_ANY; srvaddr.sin_port=htons(atoi(argv[1])); if(bind(sock,(struct sockaddr*)&srvaddr,length)<0){ fprintf(stderr,"Socket Bind 錯誤,無法連結 Port:%d",atoi(argv[1])); exit(1); } fromlen=sizeof((struct sockaddr_in)fromaddr); while(1){ fprintf(stdout,"等待UDP訊息到來...\n"); bzero(&buffer,BUFFER_SIZE); bzero(&fromaddr,fromlen); retval=recvfrom(sock,buffer,BUFFER_SIZE,0,(struct sockaddr*)&fromaddr,&fromlen); if(retval<0){ fprintf(stderr,"recvfrom function 發生錯誤,無法接收UDP訊息!!\n"); exit(1); } bzero(&fromip,20); strcpy(fromip,inet_ntoa(fromaddr.sin_addr)); fromport=ntohs(fromaddr.sin_port); fprintf(stdout,"接收UDP訊息:%s[來至%s:%d]\n",buffer,fromip,fromport); bzero(&echobuf,BUFFER_SIZE); strcpy(echobuf,strupr(buffer)); retval=sendto(sock,echobuf,BUFFER_SIZE,0,(struct sockaddr*)&fromaddr,fromlen); if(retval<0){ fprintf(stderr,"Sendto function 發生錯誤,無法傳送UDP訊息!!\n"); exit(1); } fprintf(stderr,"回應UDP訊息:%s[送至%s:%d]\n",echobuf,fromip,fromport); } close(sock); exit(0); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.30.109.133

11/23 02:34, , 1F
char* strupr(char *orgstr);
11/23 02:34, 1F

11/23 02:34, , 2F
這行前置宣告了 strupr 這個函數, 但是你的程式碼中沒有
11/23 02:34, 2F

11/23 02:35, , 3F
實作它, 造成 linker 無法正確連結此函數
11/23 02:35, 3F

11/23 12:31, , 4F
把那行拿掉啦
11/23 12:31, 4F
文章代碼(AID): #1EozuMCV (LinuxDev)
文章代碼(AID): #1EozuMCV (LinuxDev)