Форум программистов, компьютерный форум CyberForum.ru

Undefined symbol - C++

Восстановить пароль Регистрация
 
Павел13
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 14
28.05.2014, 08:45     Undefined symbol #1
Здравствуйте!
При линковке в Borland C++ 3.0 возникают ошибки:
Undefined symbol _SELECT in module ...
Undefined symbol _SEND in module ...
Undefined symbol _RECV in module ...
и т. д.

Однако, они описаны во включенном .h файле, только без нижнего подчёркивания "_" (select, send, recv).
Откуда берётся "_", может не правильные настройки Linker ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 08:45     Undefined symbol
Посмотрите здесь:

Linker Error: Undefined symbol _getimage in module C++
C++ Linker Error: Undefined symbol istream..
C++ Undefined symbol немогу запустить программу
Linker Error: undefined symbol C++
C++ [C++ Error] Unit1.cpp(29): E2451 Undefined symbol 'result'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
28.05.2014, 10:31     Undefined symbol #2
у Вас нет соответствующей либы)
а лучше выкиньте Borland C++ и поставьте MSVS
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,541
Записей в блоге: 27
28.05.2014, 10:32     Undefined symbol #3
А можно Ваше кодище в студию?
Павел13
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 14
28.05.2014, 11:02  [ТС]     Undefined symbol #4
а лучше выкиньте Borland C++ и поставьте MSVS
Боюсь не получится, делаю для ПЛК Adam-5510e/TCP, в мануале сказано только такую версию использовать.
А можно Ваше кодище в студию?
TCP_Server.c
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#include <stdio.h>
#include <stdlib.h>
#ifdef _MSC_VER
#include <malloc.h>
#else
#include <mem.h>
#endif
#include <string.h>
#include <conio.h>
#include <errno.h>
#include "socket.h"
#define Errno errno
 
#define FALSE 0
#define TRUE 1
#define Host_Port 5510 
#define Max_Conn 40 
#define MAXDATASIZE 100
 
SOCKET remoteSocket[Max_Conn];
int WaitSocketCount[Max_Conn];
int socketTotal = 0;
int timeoutRelease = FALSE;
 
void ReleaseClient(int idx_so);
 
int main(void)
{
    SOCKET Sock_5510, New_Conn;
    struct sockaddr_in Host_addr; 
    struct sockaddr_in Client_addr; 
    int sin_size;
    int hasConnect, hasMessage;
    int maxSocket, sidx, New_Sidx, numbytes, sidx2;
    char buf[MAXDATASIZE];
    unsigned long pulArgp;
    char *str;
    int tmpcount=1;
 
 
    if ((Sock_5510 = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
    {
        perror("socket");
        exit(1);
    }
 
 
    Host_addr.sin_family = AF_INET;
    Host_addr.sin_port = htons(Host_Port);
    Host_addr.sin_addr.s_addr = INADDR_ANY; 
    memset(&(Host_addr.sin_zero), 0, 8); 
 
    if (bind(Sock_5510, (struct sockaddr *)&Host_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
    {
        perror("bind");
        exit(1);
    }
 
    pulArgp = 1;
    if(ioctlsocket(Sock_5510, FIONBIO, &pulArgp))
    {
        perror("ioctlsocket");
        exit(1);
    }
 
 
    if (listen(Sock_5510, 5) == SOCKET_ERROR)
    {
        perror("listen");
        exit(1);
    }
 
    hasMessage = FALSE;
    memset(WaitSocketCount, 0, sizeof(WaitSocketCount));
    printf("Server started, wait for connect...\n");
    while(1)
    { 
        if (socketTotal > 0)
            hasConnect = Host_WaitForClient(Sock_5510, 0);
        else
            hasConnect = Host_WaitForClient(Sock_5510, 5);
        
        if(hasConnect)
        {
            printf("Receive client connect request...\n");
            sin_size = sizeof(struct sockaddr_in);
            if ((New_Conn = accept(Sock_5510, (struct sockaddr *)&Client_addr,
                &sin_size)) == INVALID_SOCKET)
            {
                perror("accept");
                continue;
            }
 
            if (New_Conn != INVALID_SOCKET)
            {
                if (socketTotal < Max_Conn)
                {
                    remoteSocket[socketTotal] = New_Conn;
                    New_Sidx = socketTotal;
                    socketTotal++;
                }
                else
                {
                    if (send(New_Conn, "Connetion full, you are going to be disconnected!\n", 50, 0) == SOCKET_ERROR)
                        perror("send");
                    closesocket(New_Conn);
                    printf("Connetion full, disconnect client!\n");
                }
            }
            else
                printf("(TCP) Invalid incoming socket!\n");
 
                
            str = "Hello, world!\n";
            if (send(remoteSocket[New_Sidx], str, strlen(str), 0) == SOCKET_ERROR)
                perror("send"); 
 
 
        }
        
        if(socketTotal>0)
        {
            for(sidx=0; sidx<socketTotal; sidx++)
            {
                hasMessage = Host_WaitForClient(remoteSocket[sidx], 0);
                if(hasMessage)
                {
                    if((numbytes=recv(remoteSocket[sidx], buf, sizeof(buf), 0)) == SOCKET_ERROR)
                    {
                        ReleaseClient(sidx);
                    }
                    else
                    {
                    
                        if(numbytes>0)
                            printf("Server receive: %s", buf);
                    
                        if(tmpcount%2==0)
                            str = "ACK\n";
                        else
                            str = "A C K\n";
                        
                        if(numbytes==0)
                        {
                            ReleaseClient(sidx);
                        }
                        else if(send(remoteSocket[sidx], str, strlen(str), 0) == SOCKET_ERROR)
                        {
                            ReleaseClient(sidx);
                        }
                    
 
                        memset(buf, 0, sizeof(buf));
                        tmpcount++;
                        if(tmpcount>100)
                            tmpcount = 1;
                        
                        WaitSocketCount[sidx] = 0;
                    }
                }
                else
                    WaitSocketCount[sidx]++;
                    
                if(WaitSocketCount[sidx]>10000)
                {
                    timeoutRelease = TRUE;
                    ReleaseClient(sidx);
                }
 
            }   
        }
    }
    
    return 0;
}
 
int Host_WaitForClient(int WaitSocket, int i_iWaitMilliSec)
{
    fd_set FdSet;
    struct timeval  waitTime;
    
    FD_ZERO(&FdSet);
    FD_SET(WaitSocket, &FdSet);
    waitTime.tv_sec  = i_iWaitMilliSec / 1000;
    waitTime.tv_usec = (i_iWaitMilliSec % 1000)*1000L;
 
    if (select(0, &FdSet, NULL, NULL, &waitTime) > 0)
        return TRUE;
    return FALSE;
}
 
 
void ReleaseClient(int idx_so)
{
    int sidx, sidx2;
    
    sidx = idx_so;
    
    if(timeoutRelease)
    {
        if (send(remoteSocket[sidx], "Connetion timeout, you are going to be disconnected!\n", 53, 0) == -1)
            perror("send");
    }
    
    if(remoteSocket[sidx]!=INVALID_SOCKET)
    {
        if(closesocket(remoteSocket[sidx])!=0)
            printf("Release client resource fail!");
    }
 
    
    for(sidx2 = sidx; sidx2<= socketTotal-1; sidx2++)
    {
        if(sidx2<socketTotal-1)
        {
            WaitSocketCount[sidx2] = WaitSocketCount[sidx2+1];
            remoteSocket[sidx2] = remoteSocket[sidx2+1];    
        }
        else if(sidx2==socketTotal-1)
        {
            WaitSocketCount[sidx2] = 0;
            remoteSocket[sidx2] = NULL; 
        }
                        
    }
                    
    socketTotal--;
    
 
    if(timeoutRelease)
        printf("Connetion timeout, disconnect client %d!\n", sidx);
    else
        printf("Socket error, disconnect client %d!\n", sidx);
        
    if(socketTotal==0)
        printf("Wait for client connect...\n");
 
    timeoutRelease = FALSE;
 
}
socket.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
#ifndef _SOCKETAPI_
#define _SOCKETAPI_
 
#ifndef FAR
#define FAR far
#endif
 
#ifndef __WIN_TYPES
 #define __WIN_TYPES
 typedef unsigned char BYTE;
 typedef unsigned short WORD;
 typedef unsigned long DWORD;
#endif
 
#ifndef MAKEWORD
#define MAKEWORD(a, b)      ((WORD)(((BYTE)(a)) | (((WORD)((BYTE)(b))) << 8)))
#endif
#ifndef LOWORD
#define LOWORD(l)           ((WORD)(l))
#endif
#ifndef HIWORD
#define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
#endif
#ifndef LOBYTE
#define LOBYTE(w)           ((BYTE)(w))
#endif
#ifndef HIBYTE
#define HIBYTE(w)           ((BYTE)(((WORD)(w) >> 8) & 0xFF))
#endif
 
/*
 * Basic system type definitions, taken from the BSD file sys/types.h.
 */
typedef unsigned char   u_char;
typedef unsigned short  u_short;
typedef unsigned int        u_int;
typedef unsigned long   u_long;
 
/*
 * The new type to be used in all
 * instances which refer to sockets.
 */
typedef u_int           SOCKET;
 
/*
 * Select uses arrays of SOCKETs.  These macros manipulate such
 * arrays.  FD_SETSIZE may be defined by the user before including
 * this file, but the default here should be >= 16.
 *
 * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
 * INCLUDED IN SOCKET.H EXACTLY AS SHOWN HERE.
 */
#ifndef FD_SETSIZE
#define FD_SETSIZE      64
#endif /* FD_SETSIZE */
 
typedef struct fd_set {
        u_short fd_count;               /* how many are SET? */
        SOCKET  fd_array[FD_SETSIZE];   /* an array of SOCKETs */
} fd_set;
 
#ifdef __cplusplus
extern "C" {
#endif
extern int  __WSAFDIsSet(SOCKET, fd_set *);
extern void  __WSAFDSet(SOCKET, fd_set *);
extern void  __WSAFDClr(SOCKET, fd_set *);
#ifdef __cplusplus
}
#endif
 
#ifdef FD_MACRO_INLINE
#define FD_CLR(fd, set) do { \
    u_int __i; \
    for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) { \
        if (((fd_set *)(set))->fd_array[__i] == fd) { \
            while (__i < ((fd_set *)(set))->fd_count-1) { \
                ((fd_set *)(set))->fd_array[__i] = \
                    ((fd_set *)(set))->fd_array[__i+1]; \
                __i++; \
            } \
            ((fd_set *)(set))->fd_count--; \
            break; \
        } \
    } \
} while(0)
 
#define FD_SET(fd, set) do { \
     u_int __i; \
     for (__i = 0; __i < ((fd_set *)(set))->fd_count; __i++) { \
          if (((fd_set *)(set))->fd_array[__i] == (fd)) { \
                break; \
          } \
     } \
     if (__i == ((fd_set *)(set))->fd_count) { \
          if (((fd_set *)(set))->fd_count < FD_SETSIZE) { \
                ((fd_set *)(set))->fd_array[__i] = (fd); \
                ((fd_set *)(set))->fd_count++; \
          } \
     } \
} while(0)
#else
#define FD_SET(fd, set) __WSAFDSet((SOCKET)fd, (fd_set *)set)
#define FD_CLR(fd, set) __WSAFDClr((SOCKET)fd, (fd_set *)set)
#endif
 
#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
 
#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)fd, (fd_set *)set)
 
/*
 * Structure used in select() call, taken from the BSD file sys/time.h.
 */
struct timeval {
        long    tv_sec;         /* seconds */
        long    tv_usec;        /* and microseconds */
};
 
/*
 * Operations on timevals.
 *
 * NB: timercmp does not work for >= or <=.
 */
#define timerisset(tvp)         ((tvp)->tv_sec || (tvp)->tv_usec)
#define timercmp(tvp, uvp, cmp) \
        ((tvp)->tv_sec cmp (uvp)->tv_sec || \
         (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
#define timerclear(tvp)         (tvp)->tv_sec = (tvp)->tv_usec = 0
 
/*
 * Commands for ioctlsocket(),  taken from the BSD file fcntl.h.
 *
 *
 * Ioctl's have the command encoded in the lower word,
 * and the size of any in or out parameters in the upper
 * word.  The high 2 bits of the upper word are used
 * to encode the in/out status of the parameter; for now
 * we restrict parameters to at most 128 bytes.
 */
#define IOCPARM_MASK    0x7f            /* parameters must be < 128 bytes */
#define IOC_VOID        0x20000000L     /* no parameters */
#define IOC_OUT         0x40000000L     /* copy out parameters */
#define IOC_IN          0x80000000L     /* copy in parameters */
#define IOC_INOUT       (IOC_IN|IOC_OUT)
                                        /* 0x20000000 distinguishes new &
                                            old ioctl's */
#define _IO(x,y)        (IOC_VOID|(x<<8)|y)
 
#define _IOR(x,y,t)     (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
 
#define _IOW(x,y,t)     (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
 
#define FIONREAD    _IOR('f', 127, u_long) /* get # bytes to read */
#define FIONBIO     _IOW('f', 126, u_long) /* set/clear non-blocking i/o */
#define FIOASYNC    _IOW('f', 125, u_long) /* set/clear async i/o */
 
/* Socket I/O Controls */
#define SIOCSHIWAT  _IOW('s',  0, u_long)  /* set high watermark */
#define SIOCGHIWAT  _IOR('s',  1, u_long)  /* get high watermark */
#define SIOCSLOWAT  _IOW('s',  2, u_long)  /* set low watermark */
#define SIOCGLOWAT  _IOR('s',  3, u_long)  /* get low watermark */
#define SIOCATMARK  _IOR('s',  7, u_long)  /* at oob mark? */
 
/*
 * Structures returned by network data base library, taken from the
 * BSD file netdb.h.  All addresses are supplied in host order, and
 * returned in network order (suitable for use in system calls).
 */
 
struct  hostent {
        char    * h_name;           /* official name of host */
        char    * * h_aliases;  /* alias list */
        short   h_addrtype;             /* host address type */
        short   h_length;               /* length of address */
        char    * * h_addr_list; /* list of addresses */
#define h_addr  h_addr_list[0]          /* address, for backward compat */
};
 
/*
 * It is assumed here that a network number
 * fits in 32 bits.
 */
struct  netent {
        char    * n_name;           /* official name of net */
        char    * * n_aliases;      /* alias list */
        short   n_addrtype;         /* net address type */
        u_long  n_net;          /* network # */
};
 
struct  servent {
        char    * s_name;           /* official service name */
        char    * * s_aliases;      /* alias list */
        short   s_port;                 /* port # */
        char    * s_proto;          /* protocol to use */
};
 
struct  protoent {
        char    * p_name;           /* official protocol name */
        char    * * p_aliases;      /* alias list */
        short   p_proto;                /* protocol # */
};
 
/*
 * Constants and structures defined by the internet system,
 * Per RFC 790, September 1981, taken from the BSD file netinet/in.h.
 */
 
/*
 * Protocols
 */
#define IPPROTO_IP          0               /* dummy for IP */
#define IPPROTO_ICMP            1               /* control message protocol */
#define IPPROTO_GGP             2               /* gateway^2 (deprecated) */
#define IPPROTO_TCP             6               /* tcp */
#define IPPROTO_PUP             12              /* pup */
#define IPPROTO_UDP             17              /* user datagram protocol */
#define IPPROTO_IDP             22              /* xns idp */
#define IPPROTO_ND          77              /* UNOFFICIAL net disk proto */
 
#define IPPROTO_RAW             255             /* raw IP packet */
#define IPPROTO_MAX             256
 
/*
 * Port/socket numbers: network standard functions
 */
#define IPPORT_ECHO             7
#define IPPORT_DISCARD      9
#define IPPORT_SYSTAT       11
#define IPPORT_DAYTIME      13
#define IPPORT_NETSTAT      15
#define IPPORT_FTP          21
#define IPPORT_TELNET       23
#define IPPORT_SMTP             25
#define IPPORT_TIMESERVER   37
#define IPPORT_NAMESERVER   42
#define IPPORT_WHOIS            43
#define IPPORT_MTP          57
 
/*
 * Port/socket numbers: host specific functions
 */
#define IPPORT_TFTP             69
#define IPPORT_RJE          77
#define IPPORT_FINGER       79
#define IPPORT_TTYLINK      87
#define IPPORT_SUPDUP       95
 
/*
 * UNIX TCP sockets
 */
#define IPPORT_EXECSERVER   512
#define IPPORT_LOGINSERVER  513
#define IPPORT_CMDSERVER    514
#define IPPORT_EFSSERVER    520
 
/*
 * UNIX UDP sockets
 */
#define IPPORT_BIFFUDP      512
#define IPPORT_WHOSERVER    513
#define IPPORT_ROUTESERVER  520
                                        /* 520+1 also used */
 
/*
 * Ports < IPPORT_RESERVED are reserved for
 * privileged processes (e.g. root).
 */
#define IPPORT_RESERVED     1024
 
/*
 * Link numbers
 */
#define IMPLINK_IP          155
#define IMPLINK_LOWEXPER    156
#define IMPLINK_HIGHEXPER   158
 
/*
 * Internet address (old style... should be updated)
 */
struct in_addr {
        union {
                struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
                struct { u_short s_w1,s_w2; } S_un_w;
                u_long S_addr;
        } S_un;
#define s_addr  S_un.S_addr
                                /* can be used for most tcp & ip code */
#define s_host  S_un.S_un_b.s_b2
                                /* host on imp */
#define s_net   S_un.S_un_b.s_b1
                                /* network */
#define s_imp   S_un.S_un_w.s_w2
                                /* imp */
#define s_impno S_un.S_un_b.s_b4
                                /* imp # */
#define s_lh    S_un.S_un_b.s_b3
                                /* logical host */
};
 
/*
 * Definitions of bits in internet address integers.
 * On subnets, the decomposition of addresses to host and net parts
 * is done according to subnet mask, not the masks here.
 */
#define IN_CLASSA(i)            (((long)(i) & 0x80000000) == 0)
#define IN_CLASSA_NET       0xff000000
#define IN_CLASSA_NSHIFT    24
#define IN_CLASSA_HOST      0x00ffffff
#define IN_CLASSA_MAX       128
 
#define IN_CLASSB(i)            (((long)(i) & 0xc0000000) == 0x80000000)
#define IN_CLASSB_NET       0xffff0000
#define IN_CLASSB_NSHIFT    16
#define IN_CLASSB_HOST      0x0000ffff
#define IN_CLASSB_MAX       65536
 
#define IN_CLASSC(i)            (((long)(i) & 0xc0000000) == 0xc0000000)
#define IN_CLASSC_NET       0xffffff00
#define IN_CLASSC_NSHIFT    8
#define IN_CLASSC_HOST      0x000000ff
 
#define INADDR_ANY          (u_long)0x00000000
#define INADDR_LOOPBACK     0x7f000001
#define INADDR_BROADCAST    (u_long)0xffffffff
#define INADDR_NONE             0xffffffffL
 
/*
 * Socket address, internet style.
 */
struct sockaddr_in {
        short   sin_family;
        u_short sin_port;
        struct  in_addr sin_addr;
        char    sin_zero[8];
};
 
#define WSADESCRIPTION_LEN  256
#define WSASYS_STATUS_LEN   128
 
typedef struct WSAData {
        WORD                    wVersion;
        WORD                    wHighVersion;
        char                    szDescription[WSADESCRIPTION_LEN+1];
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];
        unsigned short      iMaxSockets;
        unsigned short      iMaxUdpDg;
        char *          lpVendorInfo;
} WSADATA;
 
typedef WSADATA *LPWSADATA;
 
 
/*
 * Options for use with [gs]etsockopt at the IP level.
 */
#define IP_OPTIONS      1               /* set/get IP per-packet options */
 
/*
 * Definitions related to sockets: types, address families, options,
 * taken from the BSD file sys/socket.h.
 */
 
/*
 * This is used instead of -1, since the
 * SOCKET type is unsigned.
 */
#define INVALID_SOCKET  (SOCKET)(~0)
#define SOCKET_ERROR        (-1)
 
/*
 * Types
 */
#define SOCK_STREAM         1               /* stream socket */
#define SOCK_DGRAM      2               /* datagram socket */
#define SOCK_RAW            3               /* raw-protocol interface */
#define SOCK_RDM            4               /* reliably-delivered message */
#define SOCK_SEQPACKET  5               /* sequenced packet stream */
 
/*
 * Option flags per-socket.
 */
#define SO_DEBUG            0x0001          /* turn on debugging info recording */
#define SO_ACCEPTCONN   0x0002          /* socket has had listen() */
#define SO_REUSEADDR        0x0004          /* allow local address reuse */
#define SO_KEEPALIVE        0x0008          /* keep connections alive */
#define SO_DONTROUTE        0x0010          /* just use interface addresses */
#define SO_BROADCAST        0x0020          /* permit sending of broadcast msgs */
#define SO_USELOOPBACK  0x0040          /* bypass hardware when possible */
#define SO_LINGER           0x0080          /* linger on close if data present */
#define SO_OOBINLINE        0x0100          /* leave received OOB data in line */
 
#define SO_DONTLINGER   (u_int)(~SO_LINGER)
 
/*
 * Additional options.
 */
#define SO_SNDBUF       0x1001          /* send buffer size */
#define SO_RCVBUF       0x1002          /* receive buffer size */
#define SO_SNDLOWAT     0x1003          /* send low-water mark */
#define SO_RCVLOWAT     0x1004          /* receive low-water mark */
#define SO_SNDTIMEO     0x1005          /* send timeout */
#define SO_RCVTIMEO     0x1006          /* receive timeout */
#define SO_ERROR        0x1007          /* get error status and clear */
#define SO_TYPE         0x1008          /* get socket type */
 
/*
 * TCP options.
 */
#define TCP_NODELAY     0x0001
 
/*
 * Address families.
 */
#define AF_UNSPEC       0               /* unspecified */
#define AF_UNIX         1               /* local to host (pipes, portals) */
#define AF_INET         2               /* internetwork: UDP, TCP, etc. */
#define AF_IMPLINK  3               /* arpanet imp addresses */
#define AF_PUP          4               /* pup protocols: e.g. BSP */
#define AF_CHAOS        5               /* mit CHAOS protocols */
#define AF_NS           6               /* XEROX NS protocols */
#define AF_ISO          7               /* ISO protocols */
#define AF_OSI          AF_ISO      /* OSI is ISO */
#define AF_ECMA         8               /* european computer manufacturers */
#define AF_DATAKIT  9               /* datakit protocols */
#define AF_CCITT        10              /* CCITT protocols, X.25 etc */
#define AF_SNA          11              /* IBM SNA */
#define AF_DECnet       12              /* DECnet */
#define AF_DLI          13              /* Direct data link interface */
#define AF_LAT          14              /* LAT */
#define AF_HYLINK       15              /* NSC Hyperchannel */
#define AF_APPLETALK    16              /* AppleTalk */
#define AF_NETBIOS  17              /* NetBios-style addresses */
 
#define AF_MAX          18
 
/*
 * Structure used by kernel to store most
 * addresses.
 */
struct sockaddr {
        u_short sa_family;          /* address family */
        char    sa_data[14];            /* up to 14 bytes of direct address */
};
 
/*
 * Structure used by kernel to pass protocol
 * information in raw sockets.
 */
struct sockproto {
        u_short sp_family;          /* address family */
        u_short sp_protocol;            /* protocol */
};
 
/*
 * Protocol families, same as address families for now.
 */
#define PF_UNSPEC       AF_UNSPEC
#define PF_UNIX         AF_UNIX
#define PF_INET         AF_INET
#define PF_IMPLINK  AF_IMPLINK
#define PF_PUP          AF_PUP
#define PF_CHAOS        AF_CHAOS
#define PF_NS           AF_NS
#define PF_ISO          AF_ISO
#define PF_OSI          AF_OSI
#define PF_ECMA         AF_ECMA
#define PF_DATAKIT  AF_DATAKIT
#define PF_CCITT        AF_CCITT
#define PF_SNA          AF_SNA
#define PF_DECnet       AF_DECnet
#define PF_DLI          AF_DLI
#define PF_LAT          AF_LAT
#define PF_HYLINK       AF_HYLINK
#define PF_APPLETALK    AF_APPLETALK
 
#define PF_MAX          AF_MAX
 
/*
 * Structure used for manipulating linger option.
 */
struct  linger {
        u_short l_onoff;                /* option on/off */
        u_short l_linger;               /* linger time */
};
 
/*
 * Level number for (get/set)sockopt() to apply to socket itself.
 */
#define SOL_SOCKET      0xffff          /* options for socket level */
 
/*
 * Maximum queue length specifiable by listen.
 */
#define SOMAXCONN           5
 
#define MSG_OOB             0x1             /* process out-of-band data */
#define MSG_PEEK            0x2             /* peek at incoming message */
#define MSG_DONTROUTE   0x4             /* send without using routing tables */
 
#define MSG_MAXIOVLEN   16
 
/*
 * Define constant based on rfc883, used by gethostbyxxxx() calls.
 */
#define MAXGETHOSTSTRUCT        1024
 
/*
 * Define flags to be used with the WSAAsyncSelect() call.
 */
#define FD_READ         0x01
#define FD_WRITE        0x02
#define FD_OOB          0x04
#define FD_ACCEPT       0x08
#define FD_CONNECT  0x10
#define FD_CLOSE        0x20
 
/*
 * All Windows Sockets error constants are biased by WSABASEERR from
 * the "normal"
 */
#define WSABASEERR          10000
/*
 * Windows Sockets definitions of regular Microsoft C error constants
 */
#define WSAEINTR                (WSABASEERR+4)
#define WSAEBADF                (WSABASEERR+9)
#define WSAEACCES               (WSABASEERR+13)
#define WSAEFAULT               (WSABASEERR+14)
#define WSAEEXIST               (WSABASEERR+17)
#define WSAEINVAL               (WSABASEERR+22)
#define WSAEMFILE               (WSABASEERR+24)
 
/*
 * Windows Sockets definitions of regular Berkeley error constants
 */
#define WSAEWOULDBLOCK      (WSABASEERR+35)
#define WSAEINPROGRESS      (WSABASEERR+36)
#define WSAEALREADY             (WSABASEERR+37)
#define WSAENOTSOCK             (WSABASEERR+38)
#define WSAEDESTADDRREQ     (WSABASEERR+39)
#define WSAEMSGSIZE             (WSABASEERR+40)
#define WSAEPROTOTYPE       (WSABASEERR+41)
#define WSAENOPROTOOPT      (WSABASEERR+42)
#define WSAEPROTONOSUPPORT  (WSABASEERR+43)
#define WSAESOCKTNOSUPPORT  (WSABASEERR+44)
#define WSAEOPNOTSUPP       (WSABASEERR+45)
#define WSAEPFNOSUPPORT     (WSABASEERR+46)
#define WSAEAFNOSUPPORT     (WSABASEERR+47)
#define WSAEADDRINUSE       (WSABASEERR+48)
#define WSAEADDRNOTAVAIL    (WSABASEERR+49)
#define WSAENETDOWN             (WSABASEERR+50)
#define WSAENETUNREACH      (WSABASEERR+51)
#define WSAENETRESET            (WSABASEERR+52)
#define WSAECONNABORTED     (WSABASEERR+53)
#define WSAECONNRESET       (WSABASEERR+54)
#define WSAENOBUFS          (WSABASEERR+55)
#define WSAEISCONN          (WSABASEERR+56)
#define WSAENOTCONN             (WSABASEERR+57)
#define WSAESHUTDOWN            (WSABASEERR+58)
#define WSAETOOMANYREFS     (WSABASEERR+59)
#define WSAETIMEDOUT            (WSABASEERR+60)
#define WSAECONNREFUSED     (WSABASEERR+61)
#define WSAELOOP                (WSABASEERR+62)
#define WSAENAMETOOLONG     (WSABASEERR+63)
#define WSAEHOSTDOWN            (WSABASEERR+64)
#define WSAEHOSTUNREACH     (WSABASEERR+65)
#define WSAENOTEMPTY            (WSABASEERR+66)
#define WSAEPROCLIM             (WSABASEERR+67)
#define WSAEUSERS               (WSABASEERR+68)
#define WSAEDQUOT               (WSABASEERR+69)
#define WSAESTALE               (WSABASEERR+70)
#define WSAEREMOTE          (WSABASEERR+71)
 
/*
 * Extended Windows Sockets error constant definitions
 */
#define WSASYSNOTREADY      (WSABASEERR+91)
#define WSAVERNOTSUPPORTED  (WSABASEERR+92)
#define WSANOTINITIALISED   (WSABASEERR+93)
 
/*
 * Error return codes from gethostbyname() and gethostbyaddr()
 * (when using the resolver). Note that these errors are
 * retrieved via WSAGetLastError() and must therefore follow
 * the rules for avoiding clashes with error numbers from
 * specific implementations or language run-time systems.
 * For this reason the codes are based at WSABASEERR+1001.
 * Note also that [WSA]NO_ADDRESS is defined only for
 * compatibility purposes.
 */
 
#define h_errno         WSAGetLastError()
 
/* Authoritative Answer: Host not found */
#define WSAHOST_NOT_FOUND   (WSABASEERR+1001)
#define HOST_NOT_FOUND      WSAHOST_NOT_FOUND
 
/* Non-Authoritative: Host not found, or SERVERFAIL */
#define WSATRY_AGAIN            (WSABASEERR+1002)
#define TRY_AGAIN               WSATRY_AGAIN
 
/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
#define WSANO_RECOVERY      (WSABASEERR+1003)
#define NO_RECOVERY             WSANO_RECOVERY
 
/* Valid name, no data record of requested type */
#define WSANO_DATA          (WSABASEERR+1004)
#define NO_DATA                 WSANO_DATA
 
/* no address, look for MX record */
#define WSANO_ADDRESS       WSANO_DATA
#define NO_ADDRESS          WSANO_ADDRESS
 
/* UNIX definitions - conflicts with DOS!
#define EINTR               4
#define EBADF               9
#define EACCES              13
#define EFAULT              14
#define EEXIST              17
#define EINVAL              22
#define EMFILE              24
*/
 
/*
 * Windows Sockets errors redefined as regular Berkeley error constants
 */
#define EWOULDBLOCK             WSAEWOULDBLOCK
#define EINPROGRESS             WSAEINPROGRESS
#define EALREADY                WSAEALREADY
#define ENOTSOCK                WSAENOTSOCK
#define EDESTADDRREQ            WSAEDESTADDRREQ
#define EMSGSIZE                WSAEMSGSIZE
#define EPROTOTYPE          WSAEPROTOTYPE
#define ENOPROTOOPT             WSAENOPROTOOPT
#define EPROTONOSUPPORT     WSAEPROTONOSUPPORT
#define ESOCKTNOSUPPORT     WSAESOCKTNOSUPPORT
#define EOPNOTSUPP          WSAEOPNOTSUPP
#define EPFNOSUPPORT            WSAEPFNOSUPPORT
#define EAFNOSUPPORT            WSAEAFNOSUPPORT
#define EADDRINUSE          WSAEADDRINUSE
#define EADDRNOTAVAIL       WSAEADDRNOTAVAIL
#define ENETDOWN                WSAENETDOWN
#define ENETUNREACH             WSAENETUNREACH
#define ENETRESET               WSAENETRESET
#define ECONNABORTED            WSAECONNABORTED
#define ECONNRESET          WSAECONNRESET
#define ENOBUFS                 WSAENOBUFS
#define EISCONN                 WSAEISCONN
#define ENOTCONN                WSAENOTCONN
#define ESHUTDOWN               WSAESHUTDOWN
#define ETOOMANYREFS            WSAETOOMANYREFS
#define ETIMEDOUT               WSAETIMEDOUT
#define ECONNREFUSED            WSAECONNREFUSED
#define ELOOP                   WSAELOOP
//#define ENAMETOOLONG          WSAENAMETOOLONG
#define EHOSTDOWN               WSAEHOSTDOWN
#define EHOSTUNREACH            WSAEHOSTUNREACH
//#define ENOTEMPTY             WSAENOTEMPTY
#define EPROCLIM                WSAEPROCLIM
#define EUSERS                  WSAEUSERS
#define EDQUOT                  WSAEDQUOT
#define ESTALE                  WSAESTALE
#define EREMOTE                 WSAEREMOTE
 
/* Socket function prototypes */
 
#ifdef __cplusplus
extern "C" {
#endif
 
SOCKET  accept (SOCKET s, struct sockaddr *addr,
                          int *addrlen);
int   bind (SOCKET s, const struct sockaddr *addr, int namelen);
int   closesocket (SOCKET s);
int   connect (SOCKET s, const struct sockaddr *name, int namelen);
int   ioctlsocket (SOCKET s, long cmd, u_long *argp);
int   getpeername (SOCKET s, struct sockaddr *name,
                            int * namelen);
int   getsockname (SOCKET s, struct sockaddr *name,
                            int * namelen);
int   getsockopt (SOCKET s, int level, int optname,
                            char * optval, int *optlen);
u_long   htonl (u_long hostlong);
u_short   htons (u_short hostshort);
unsigned long   inet_addr (const char * cp);
char *   inet_ntoa (struct in_addr in);
int   listen (SOCKET s, int backlog);
u_long   ntohl (u_long netlong);
u_short   ntohs (u_short netshort);
int   recv (SOCKET s, char * buf, int len, int flags);
int   recvfrom (SOCKET s, char * buf, int len, int flags,
                         struct sockaddr *from, int * fromlen);
int   select (int nfds, fd_set *readfds, fd_set *writefds,
                        fd_set *exceptfds, const struct timeval *timeout);
int   send (SOCKET s, const char * buf, int len, int flags);
int   sendto (SOCKET s, const char * buf, int len, int flags,
                        const struct sockaddr *to, int tolen);
int   setsockopt (SOCKET s, int level, int optname,
                            const char * optval, int optlen);
int   shutdown (SOCKET s, int how);
SOCKET   socket (int af, int type, int protocol);
 
/* Database function prototypes */
 
struct hostent *   gethostbyaddr(const char * addr,
                                              int len, int type);
struct hostent *   gethostbyname(const char * name);
int   gethostname (char * name, int namelen);
struct servent *   getservbyport(int port, const char * proto);
struct servent *   getservbyname(const char * name,
                                              const char * proto);
struct protoent *   getprotobynumber(int proto);
struct protoent *   getprotobyname(const char * name);
 
// Microsoft Windows Extension function prototypes
int WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData);
int WSACleanup(void);
void WSASetLastError(int iError);
int WSAGetLastError(void);
 
// Debug functions
int StartDebug(char *pszFileName);
int StopDebug(void);
 
#ifdef __cplusplus
}
#endif
 
/* Microsoft Windows Extended data types */
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr *PSOCKADDR;
typedef struct sockaddr FAR *LPSOCKADDR;
 
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
 
typedef struct linger LINGER;
typedef struct linger *PLINGER;
typedef struct linger FAR *LPLINGER;
 
typedef struct in_addr IN_ADDR;
typedef struct in_addr *PIN_ADDR;
typedef struct in_addr FAR *LPIN_ADDR;
 
typedef struct fd_set FD_SET;
typedef struct fd_set *PFD_SET;
typedef struct fd_set FAR *LPFD_SET;
 
typedef struct hostent HOSTENT;
typedef struct hostent *PHOSTENT;
typedef struct hostent FAR *LPHOSTENT;
 
typedef struct servent SERVENT;
typedef struct servent *PSERVENT;
typedef struct servent FAR *LPSERVENT;
 
typedef struct protoent PROTOENT;
typedef struct protoent *PPROTOENT;
typedef struct protoent FAR *LPPROTOENT;
 
typedef struct timeval TIMEVAL;
typedef struct timeval *PTIMEVAL;
typedef struct timeval FAR *LPTIMEVAL;
 
#endif  /* _SOCKETAPI_ */
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
28.05.2014, 12:11     Undefined symbol #5
Цитата Сообщение от aLarman Посмотреть сообщение
а лучше выкиньте Borland C++ и поставьте MSVS
Вот такие тезисы лучше поприберечь для спецраздела.

Павел13, согласно пункту 5.5 Правил запрещено дублировать темы. Обсуждайте каждый конкретный вопрос в соответствующей одной.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
28.05.2014, 12:16     Undefined symbol #6
короч вот ссылка как подключать либы Как в Borland C++ к проекту подключить lib библиотеку?
как точно либа нызвается не знаю, предположительно winsock.lib
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
28.05.2014, 12:27     Undefined symbol #7
Компилятор для DOS, заголовочный файл от компилятора под Windows, библиотеку не из Linux-а брал?
Павел13
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 14
28.05.2014, 12:48  [ТС]     Undefined symbol #8
С языком я почти не знаком, мне необходимо создать EXE для ПЛК. Тексы программ написаны давно, их нужно прилинковать к моей программе в формате OBJ (написана в Ultralogik32 на FBD). Список файлов следующий:
C0L.OBJ
TCP_Server.CPP - подключаемый код
PLCRTL.LIB
5678.OBJ - объектный файл от Ultralogik
CL.LIB

Я единственное грешу на настройки Linker, так как этим программам в обед 100 лет (идут с диском в оборудованию).
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.05.2014, 13:15     Undefined symbol #9
Павел13, тебя спрашивают, откуда ты взял свой socket.h ?
потому что он подозрительно смахивает на winsock.h - файл явно не для твоего DOS-борланда
Тогда при чём тут твои "настройки линкер", если ты, очевидно, что-то накопипастил и скрываешь от нас это!?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 13:25     Undefined symbol
Еще ссылки по теме:

C++ Очередь (undefined symbol)
C++ undefined symbol: * in Unknown on line 0
Выдает ошибку( undefined symbol display() in module, как исправить? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Павел13
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 14
28.05.2014, 13:25  [ТС]     Undefined symbol #10
Я и объясняю, моего только OBJ файл, написанный в Ultralogik, всё остальное (в том числе socket.h) идёт с диском c ПЛК с той целью, чтобы это дело прилинковывать к своему OBJ.
aLarman подсказал, что нет нужной lib. Закинул в проект все Lib, что шли на диске, ошибка осталась только одна:
Unable to open file 'PLCRTL.LIB'.
Хотя в проект она добавлена, как и все остальные lib. Единственное она не с диска, а от программы Ultralogik, но вроде как нужная
Yandex
Объявления
28.05.2014, 13:25     Undefined symbol
Ответ Создать тему
Опции темы

Текущее время: 23:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru