Thread: can't compile library

  1. #1
    Registered User
    Join Date
    May 2010
    Posts
    8

    Post can't compile library

    I am taking the cs50 computer science course from harvard online. Even though I could just get a regular C compiler program for windows, I want to stick to what they do in the course. So I signed up for a freebsd shell account from arbornet.org that I access with the program 'PUTTY' . I use the gcc compiler to make programs and follow the course. But then I wanted to use the CS50 library with the programs. Those are two files. cs50.c and cs50.h . I want to include them like stdio.h but somehow I can't figure it out. I put the cs50.c and cs50.h files in my home directory and followed the instructions:

    To compile as a static library on your own system:
    gcc -c -ggdb -std=c99 cs50.c -o cs50.o
    ar rcs libcs50.a cs50.o
    rm -f cs50.o
    cp cs50.h /usr/local/include
    cp libcs50.a /usr/local/lib
    but I got the following error message:


    Code:
    In file included from cs50.c:28:
    cs50.h:22:95: warning: extra tokens at end of #ifndef directive
    cs50.h:22:1: unterminated #ifndef
    cs50.c: In function `GetChar':
    cs50.c:52: error: `true' undeclared (first use in this function)
    cs50.c:52: error: (Each undeclared identifier is reported only once
    cs50.c:52: error: for each function it appears in.)
    cs50.c:55: error: syntax error before "line"
    cs50.c:56: error: `line' undeclared (first use in this function)
    cs50.c:57: error: `CHAR_MAX' undeclared (first use in this function)
    cs50.c: In function `GetDouble':
    cs50.c:91: error: `true' undeclared (first use in this function)
    cs50.c:94: error: syntax error before "line"
    cs50.c:95: error: `line' undeclared (first use in this function)
    cs50.c:96: error: `DBL_MAX' undeclared (first use in this function)
    cs50.c: In function `GetFloat':
    cs50.c:130: error: `true' undeclared (first use in this function)
    cs50.c:133: error: syntax error before "line"
    cs50.c:134: error: `line' undeclared (first use in this function)
    cs50.c:135: error: `FLT_MAX' undeclared (first use in this function)
    cs50.c: In function `GetInt':
    cs50.c:169: error: `true' undeclared (first use in this function)
    cs50.c:172: error: syntax error before "line"
    cs50.c:173: error: `line' undeclared (first use in this function)
    cs50.c:174: error: `INT_MAX' undeclared (first use in this function)
    cs50.c: In function `GetLongLong':
    cs50.c:208: error: `true' undeclared (first use in this function)
    cs50.c:211: error: syntax error before "line"
    cs50.c:212: error: `line' undeclared (first use in this function)
    cs50.c:213: error: `LLONG_MAX' undeclared (first use in this function)
    cs50.c: At top level:
    cs50.c:243: error: syntax error before "GetString"
    cs50.c:244: warning: return type defaults to `int'
    cs50.c: In function `GetString':
    cs50.c:246: error: syntax error before "buffer"
    cs50.c:266: error: `UINT_MAX' undeclared (first use in this function)
    cs50.c:270: error: `buffer' undeclared (first use in this function)
    cs50.c:271: warning: return makes integer from pointer without a cast
    cs50.c:275: error: syntax error before "temp"
    cs50.c:276: error: `temp' undeclared (first use in this function)
    cs50.c:279: warning: return makes integer from pointer without a cast
    cs50.c:290: warning: return makes integer from pointer without a cast
    cs50.c:293: error: syntax error before "minimal"
    cs50.c:294: error: `minimal' undeclared (first use in this function)



    I have no idea what to do.
    Here is the code for cs50.c:






    Code:
    /****************************************************************************
     * cs50.c
     *
     * version 1.1.2
     *
     * Computer Science 50
     * Glenn Holloway
     * David J. Malan
     *
     * Definitions for CS 50's library.
     * Based on Eric Roberts' genlib.c and simpio.c.
     *
     * The latest version of this file can be found at
     * http://cs50.net/pub/releases/cs50/cs50.c.
     *
     * To compile as a static library on your own system:
     * % gcc -c -ggdb -std=c99 cs50.c -o cs50.o
     * % ar rcs libcs50.a cs50.o
     * % rm -f cs50.o
     * % cp cs50.h /usr/local/include
     * % cp libcs50.a /usr/local/lib
     ***************************************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #include "cs50.h"
    
    
    /*
     * Default capacity of buffer for standard input.
     */
    
    #define CAPACITY 128
    
    
    /*
     * char
     * GetChar()
     *
     * Reads a line of text from standard input and returns the equivalent
     * char; if text does not represent a char, user is prompted to retry.
     * Leading and trailing whitespace is ignored.  If line can't be read,
     * returns CHAR_MAX.
     */
    
    char
    GetChar()
    {
        // try to get a char from user
        while (true)
        {
            // get line of text, returning CHAR_MAX on failure
            string line = GetString();
            if (line == NULL)
                return CHAR_MAX;
    
            // return a char if only a char (possibly with
            // leading and/or trailing whitespace) was provided
            char c1, c2;
            if (sscanf(line, " %c %c", &c1, &c2) == 1)
            {
                free(line);
                return c1;
            }
            else
            {
                free(line);
                printf("Retry: ");
            }
        }
    }
    
    
    /*
     * double
     * GetDouble()
     *
     * Reads a line of text from standard input and returns the equivalent
     * double as precisely as possible; if text does not represent a
     * double, user is prompted to retry.  Leading and trailing whitespace
     * is ignored.  For simplicity, overflow and underflow are not detected.
     * If line can't be read, returns DBL_MAX.
     */
    
    double
    GetDouble()
    {
        // try to get a double from user
        while (true)
        {
            // get line of text, returning DBL_MAX on failure
            string line = GetString();
            if (line == NULL)
                return DBL_MAX;
    
            // return a double if only a double (possibly with
            // leading and/or trailing whitespace) was provided
            double d; char c;
            if (sscanf(line, " %lf %c", &d, &c) == 1)
            {
                free(line);
                return d;
            }
            else
            {
                free(line);
                printf("Retry: ");
            }
        }
    }
    
    
    /*
     * float
     * GetFloat()
     *
     * Reads a line of text from standard input and returns the equivalent
     * float as precisely as possible; if text does not represent a float,
     * user is prompted to retry.  Leading and trailing whitespace is ignored.
     * For simplicity, overflow and underflow are not detected.  If line can't
     * be read, returns FLT_MAX.
     */
    
    float
    GetFloat()
    {
        // try to get a float from user
        while (true)
        {
            // get line of text, returning FLT_MAX on failure
            string line = GetString();
            if (line == NULL)
                return FLT_MAX;
    
            // return a float if only a float (possibly with
            // leading and/or trailing whitespace) was provided
            char c; float f;
            if (sscanf(line, " %f %c", &f, &c) == 1)
            {
                free(line);
                return f;
            }
            else
            {
                free(line);
                printf("Retry: ");
            }
        }
    }
    
    
    /*
     * int
     * GetInt()
     *
     * Reads a line of text from standard input and returns it as an
     * int in the range of [-2^31 + 1, 2^31 - 2], if possible; if text
     * does not represent such an int, user is prompted to retry.  Leading
     * and trailing whitespace is ignored.  For simplicity, overflow is not
     * detected.  If line can't be read, returns INT_MAX.
     */
    
    int
    GetInt()
    {
        // try to get an int from user
        while (true)
        {
            // get line of text, returning INT_MAX on failure
            string line = GetString();
            if (line == NULL)
                return INT_MAX;
    
            // return an int if only an int (possibly with
            // leading and/or trailing whitespace) was provided
            int n; char c;
            if (sscanf(line, " %d %c", &n, &c) == 1)
            {
                free(line);
                return n;
            }
            else
            {
                free(line);
                printf("Retry: ");
            }
        }
    }
    
    
    /*
     * long long
     * GetLongLong()
     *
     * Reads a line of text from standard input and returns an equivalent
     * long long in the range [-2^63 + 1, 2^63 - 2], if possible; if text
     * does not represent such a long long, user is prompted to retry.
     * Leading and trailing whitespace is ignored.  For simplicity, overflow
     * is not detected.  If line can't be read, returns LLONG_MAX.
     */
    
    long long
    GetLongLong()
    {
        // try to get a long long from user
        while (true)
        {
            // get line of text, returning LLONG_MAX on failure
            string line = GetString();
            if (line == NULL)
                return LLONG_MAX;
    
            // return a long long if only a long long (possibly with
            // leading and/or trailing whitespace) was provided
            long long n; char c;
            if (sscanf(line, " %lld %c", &n, &c) == 1)
            {
                free(line);
                return n;
            }
            else
            {
                free(line);
                printf("Retry: ");
            }
        }
    }
    
    
    /*
     * string
     * GetString()
     *
     * Reads a line of text from standard input and returns it as a string,
     * sans trailing newline character.  (Ergo, if user inputs only "\n", 
     * returns "" not NULL.)  Leading and trailing whitespace is not ignored.
     * Returns NULL upon error or no input whatsoever (i.e., just EOF).
     */
    
    string
    GetString()
    {
        // growable buffer for chars
        string buffer = NULL;
    
        // capacity of buffer
        unsigned int capacity = 0;
    
        // number of chars actually in buffer
        unsigned int n = 0;
    
        // character read or EOF
        int c;
    
        // iteratively get chars from standard input
        while ((c = fgetc(stdin)) != '\n' && c != EOF)
        {
            // grow buffer if necessary
            if (n + 1 > capacity)
            {
                // determine new capacity: start at CAPACITY then double
                if (capacity == 0)
                    capacity = CAPACITY;
                else if (capacity <= (UINT_MAX / 2))
                    capacity += 2;
                else
                {
                    free(buffer);
                    return NULL;
                }
    
                // extend buffer's capacity
                string temp = realloc(buffer, capacity * sizeof(char));
                if (temp == NULL)
                {
                    free(buffer);
                    return NULL;
                }
                buffer = temp;
            }
    
            // append current character to buffer
            buffer[n++] = c;
        }
    
        // return NULL if user provided no input
        if (n == 0 && c == EOF)
            return NULL;
    
        // minimize buffer
        string minimal = malloc((n + 1) * sizeof(char));
        strncpy(minimal, buffer, n);
        free(buffer);
    
        // terminate string
        minimal[n] = '\0';
    
        // return string
        return minimal;
    }




    And here is the code for cs50.h:







    Code:
    /****************************************************************************
     * cs50.h
     *
     * version 1.1.2
     *
     * Computer Science 50
     * Glenn Holloway
     * David J. Malan
     *
     * Declarations for CS 50's library.
     * Based on Eric Roberts' genlib.h and simpio.h.
     *
     * The latest version of this file can be found at
     * http://cs50.net/pub/releases/cs50/cs50.h.
     *
     * To compile as a static library on your own system:
     * % gcc -c -ggdb -std=c99 cs50.c -o cs50.o
     * % ar rcs libcs50.a cs50.o
     * % rm -f cs50.o
     * % cp cs50.h /usr/local/include
     * % cp libcs50.a /usr/local/lib
     ***************************************************************************/ #ifndef _CS50_H #define _CS50_H #include <float.h> #include <limits.h> /*
     * bool
     *
     * Borrow the standard library's data type for Boolean variables whose
     * values must be (true|false).
     */ #include <stdbool.h> /*
     * string
     *
     * Our own data type for string variables.
     */ typedef char *string; /*
     * char
     * GetChar()
     *
     * Reads a line of text from standard input and returns the equivalent
     * char; if text does not represent a char, user is prompted to retry.
     * Leading and trailing whitespace is ignored.  If line can't be read,
     * returns CHAR_MAX.
     */ char GetChar(); /*
     * double
     * GetDouble()
     *
     * Reads a line of text from standard input and returns the equivalent
     * double as precisely as possible; if text does not represent a
     * double, user is prompted to retry.  Leading and trailing whitespace
     * is ignored.  For simplicity, overflow and underflow are not detected.
     * If line can't be read, returns DBL_MAX.
     */ double GetDouble(); /*
     * float
     * GetFloat()
     *
     * Reads a line of text from standard input and returns the equivalent
     * float as precisely as possible; if text does not represent a float,
     * user is prompted to retry.  Leading and trailing whitespace is ignored.
     * For simplicity, overflow and underflow are not detected.  If line can't
     * be read, returns FLT_MAX.
     */ float GetFloat(); /*
     * int
     * GetInt()
     *
     * Reads a line of text from standard input and returns it as an
     * int in the range of [-2^31 + 1, 2^31 - 2], if possible; if text
     * does not represent such an int, user is prompted to retry.  Leading
     * and trailing whitespace is ignored.  For simplicity, overflow is not
     * detected.  If line can't be read, returns INT_MAX.
     */ int GetInt(); /*
     * long long
     * GetLongLong()
     *
     * Reads a line of text from standard input and returns an equivalent
     * long long in the range [-2^63 + 1, 2^63 - 2], if possible; if text
     * does not represent such a long long, user is prompted to retry.
     * Leading and trailing whitespace is ignored.  For simplicity, overflow
     * is not detected.  If line can't be read, returns LLONG_MAX.
     */ long long GetLongLong(); /*
     * string
     * GetString()
     *
     * Reads a line of text from standard input and returns it as a string,
     * sans trailing newline character.  (Ergo, if user inputs only "\n",
     * returns "" not NULL.)  Leading and trailing whitespace is not ignored.
     * Returns NULL upon error or no input whatsoever (i.e., just EOF).
     */ string GetString(); #endif








    Thanks for helping,
    Philip

  2. #2
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    Somehow some formatting got weird when you downloaded that. In the .h file change
    Code:
    ***************************************************************************/ #ifndef _CS50_H #define _CS50_H #include <float.h> #include <limits.h> /*
     * bool
    to
    Code:
    ***************************************************************************/ 
    #ifndef _CS50_H 
    #define _CS50_H 
    #include <float.h> 
    #include <limits.h> 
    /*
     * bool
    and see what happens. Also put that #endif at the very end of the file on its own line.

  3. #3
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,660
    > ************************************************** *************************/ #ifndef _CS50_H #define _CS50_H #include <float.h> #include <limits.h> /*

    This line, and the #endif at the end are all screwed up.

    Perhaps it should look something like
    Code:
     ***************************************************************************/ 
    #ifndef _CS50_H 
    #define _CS50_H 
    #include <float.h> 
    #include <limits.h> 
    /*
    And the #endif at the end on a newline by itself.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  4. #4
    Registered User
    Join Date
    May 2010
    Posts
    8
    Thanks for the fast responses. I did what you guys said but I still get errors. Here it is:



    Code:
    %gcc -c -ggdb -std=c99 cs50.c -o cs50.o
    In file included from cs50.c:28:
    cs50.h:36:5: warning: extra tokens at end of #include directive
    cs50.c: In function `GetChar':
    cs50.c:55: error: syntax error before "line"
    cs50.c:56: error: `line' undeclared (first use in this function)
    cs50.c:56: error: (Each undeclared identifier is reported only once
    cs50.c:56: error: for each function it appears in.)
    cs50.c: In function `GetDouble':
    cs50.c:94: error: syntax error before "line"
    cs50.c:95: error: `line' undeclared (first use in this function)
    cs50.c: In function `GetFloat':
    cs50.c:133: error: syntax error before "line"
    cs50.c:134: error: `line' undeclared (first use in this function)
    cs50.c: In function `GetInt':
    cs50.c:172: error: syntax error before "line"
    cs50.c:173: error: `line' undeclared (first use in this function)
    cs50.c: In function `GetLongLong':
    cs50.c:211: error: syntax error before "line"
    cs50.c:212: error: `line' undeclared (first use in this function)
    cs50.c: At top level:
    cs50.c:243: error: syntax error before "GetString"
    cs50.c:244: warning: return type defaults to `int'
    cs50.c: In function `GetString':
    cs50.c:246: error: syntax error before "buffer"
    cs50.c:270: error: `buffer' undeclared (first use in this function)
    cs50.c:271: warning: return makes integer from pointer without a cast
    cs50.c:275: error: syntax error before "temp"
    cs50.c:276: error: `temp' undeclared (first use in this function)
    cs50.c:279: warning: return makes integer from pointer without a cast
    cs50.c:290: warning: return makes integer from pointer without a cast
    cs50.c:293: error: syntax error before "minimal"
    cs50.c:294: error: `minimal' undeclared (first use in this function)

  5. #5
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,660
    > cs50.h:36:5: warning: extra tokens at end of #include directive
    Check again - you're still wrapping lines you shouldn't
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  6. #6
    Registered User
    Join Date
    May 2010
    Posts
    8
    I can't find any(as said before I'm a beginner with C programming. I don't know all types of lines that should be wrapped). Here's my cs50.h file:

    Code:
    /****************************************************************************
     * cs50.h
     *
     * version 1.1.2
     *
     * Computer Science 50
     * Glenn Holloway
     * David J. Malan
     *
     * Declarations for CS 50's library.
     * Based on Eric Roberts' genlib.h and simpio.h.
     *
     * The latest version of this file can be found at
     * http://cs50.net/pub/releases/cs50/cs50.h.
     *
     * To compile as a static library on your own system:
     * % gcc -c -ggdb -std=c99 cs50.c -o cs50.o
     * % ar rcs libcs50.a cs50.o
     * % rm -f cs50.o
     * % cp cs50.h /usr/local/include
     * % cp libcs50.a /usr/local/lib
     ***************************************************************************/
    #ifndef _CS50_H
    #define _CS50_H
    #include <float.h>
    #include <limits.h>
    /*
     * bool
     *
     * Borrow the standard library's data type for Boolean variables whose
     * values must be (true|false).
     */ #include <stdbool.h> /*
     * string
     *
     * Our own data type for string variables.
     */ typedef char *string; /*
     * char
     * GetChar()
     *
     * Reads a line of text from standard input and returns the equivalent
     * char; if text does not represent a char, user is prompted to retry.
     * Leading and trailing whitespace is ignored.  If line can't be read,
     * returns CHAR_MAX.
     */ char GetChar(); /*
     * double
     * GetDouble()
     *
     * Reads a line of text from standard input and returns the equivalent
     * double as precisely as possible; if text does not represent a
     * double, user is prompted to retry.  Leading and trailing whitespace
     * is ignored.  For simplicity, overflow and underflow are not detected.
     * If line can't be read, returns DBL_MAX.
     */ double GetDouble(); /*
     * float
     * GetFloat()
     *
     * Reads a line of text from standard input and returns the equivalent
     * float as precisely as possible; if text does not represent a float,
     * user is prompted to retry.  Leading and trailing whitespace is ignored.
     * For simplicity, overflow and underflow are not detected.  If line can't
     * be read, returns FLT_MAX.
     */ float GetFloat(); /*
     * int
     * GetInt()
     *
     * Reads a line of text from standard input and returns it as an
     * int in the range of [-2^31 + 1, 2^31 - 2], if possible; if text
     * does not represent such an int, user is prompted to retry.  Leading
     * and trailing whitespace is ignored.  For simplicity, overflow is not
     * detected.  If line can't be read, returns INT_MAX.
     */ int GetInt(); /*
     * long long
     * GetLongLong()
     *
     * Reads a line of text from standard input and returns an equivalent
     * long long in the range [-2^63 + 1, 2^63 - 2], if possible; if text
     * does not represent such a long long, user is prompted to retry.
     * Leading and trailing whitespace is ignored.  For simplicity, overflow
     * is not detected.  If line can't be read, returns LLONG_MAX.
     */ long long GetLongLong(); /*
     * string
     * GetString()
     *
     * Reads a line of text from standard input and returns it as a string,
     * sans trailing newline character.  (Ergo, if user inputs only "\n",
     * returns "" not NULL.)  Leading and trailing whitespace is not ignored.
     * Returns NULL upon error or no input whatsoever (i.e., just EOF).
     */ string GetString();
    #endif

  7. #7
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    One of the things you're going to need to learn really quickly is that all error messages come with line numbers. So they're even telling you what line: line 36.

  8. #8
    Registered User
    Join Date
    May 2010
    Posts
    8
    I just downloaded the file again and somehow now the formatting is correct.
    I've still got a problem.
    I did the following steps:

    gcc -c -ggdb -std=c99 cs50.c -o cs50.o
    ar rcs libcs50.a cs50.o
    rm -f cs50.o



    But now I'm stuck on these two:

    cp cs50.h /usr/local/include
    cp libcs50.a /usr/local/lib


    I get the permission denied error.
    So is there any other way of getting the cs50 library into a program? I mentioned before, I'm working on a public UNIX system so I don't think I have permission to change anything other than my home folder.

  9. #9
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    If you keep those files in the same directory as the one you are compiling from, gcc will certainly be able to find the .h file (you should change <cs50.h> to "cs50.h" to help the compiler out). I believe that it will find .a files in the same directory, but it may not; if not, you should add
    Code:
    -L.
    in your compilation line (this says look for libraries in ".", which is the current directory).

    (EDIT: And if "the current directory" doesn't work, or you start making a bunch of directories, then you should make a directory called "lib" and put the .a file there and give that directory after the -L switch.)

  10. #10
    Registered User
    Join Date
    Dec 2007
    Posts
    2,675
    You certainly don't have permissions to copy those to the /usr/local/ on a free shell account. Put them in a subdirectory of your home directory and when you need to use them, point to that location.

  11. #11
    Registered User
    Join Date
    May 2010
    Posts
    8
    Still a problem. Looks like it's not picking up the library. Here's what I've got:


    Code:
    %gcc -o isbn isbn.c -L.
    /var/tmp//cc3iTfoi.o(.text+0x2d): In function `main':
    : undefined reference to `getlonglong'
    %ls
    cs50.c          cs50.h          hello           hello.c         isbn.c          libcs50.a

  12. #12
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    You still need the -lcs50 at the end, after the -L (the -L was in addition to, not instead of).

  13. #13
    Registered User
    Join Date
    May 2010
    Posts
    8
    Looks like it's not looking in my home folder but rather in the usr/bin/ld folder:

    Code:
    %gcc -o isbn isbn.c -lcs50
    /usr/bin/ld: cannot find -lcs50

  14. #14
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    No, /usr/bin is the folder. ld is the linker that actually puts everything together into an executable. -L is in addition to. MIT told you to do this:
    Code:
    gcc -o isbn isbn.c -lcs50
    Since you can't put the library in the library folder, you need to specify where it is
    Code:
    gcc -o isbn isbn.c -L. -lcs50

  15. #15
    Registered User
    Join Date
    May 2010
    Posts
    8
    Still doesn't work:
    Code:
    %gcc -o isbn isbn.c -L. -lcs50
    /var/tmp//ccY3AVxx.o(.text+0x2d): In function `main':
    : undefined reference to `getlonglong'
    Here's the isbn.c file maybe i made a mistake in the #include line:
    Code:
    #include "cs50.h"
    #include <stdio.h>
    
    int
    main(int argc, char *argv[])
    {
    printf ("Enter an ISBN number:");
    int isbn = getlonglong();
    
    int i;
    int sum;
    int x;
    
    for(i = 10; i >0; i--)
    
    {
    int x = isbn % i;
    int sum = sum +  x * i;
    }
    printf ("%d", sum);
    
    }
    Don't pay attention to the code in isbn.c I can figure that out if it's wrong. I just need to be able to compile it first.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Help building/linking to static library
    By Kernel Sanders in forum C++ Programming
    Replies: 19
    Last Post: 08-17-2008, 04:35 PM
  2. Makefile for a library
    By sirmoreno in forum Linux Programming
    Replies: 5
    Last Post: 06-04-2006, 04:52 AM
  3. Replies: 19
    Last Post: 01-12-2006, 11:04 AM
  4. very weird .h problem
    By royuco77 in forum C++ Programming
    Replies: 1
    Last Post: 09-11-2005, 07:55 AM
  5. Problem With WinPcap library
    By DrMario in forum C Programming
    Replies: 0
    Last Post: 03-26-2005, 11:26 AM

Tags for this Thread