Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
15 years ago

LwIP issue: "undefined reference".

Hi, I'm working on a project for school that will be using lwIP, and I need to familiarize myself with how it works. For now I'm just trying to write a simple test program. It doesn't even do anything yet, but I cannot for the life of me get it to compile:

#include "lwip\udp.h"
void udp_packet_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port);
  
  main(){
        // Create a new pcb.
        struct udp_pcb * pcb;
        pcb = udp_new();
        if (pcb == NULL)
              return -1;
  
        // Bind to any IP on port 60,000.
        if (udp_bind(pcb, IP_ADDR_ANY, 60000) != ERR_OK)
              return -2;
  
        // On datagram receipt, call udp_packet_recv.
        udp_recv(pcb, udp_packet_recv, NULL);
  }
  
  void udp_packet_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port){
        if (p != NULL){
              // TODO: Case handling GET packet.
              // TODO: Case handling data receipt.
  
              pbuf_free(p); // Free pbuf when finished.
        }
  }
Every time I try to compile this, I get the following errors:


  C:\Users\ZACHAR~1\AppData\Local\Temp\cc1kZ7BP.o:client.c:(.text+0xf): undefined reference to `udp_new()'
  
  C:\Users\ZACHAR~1\AppData\Local\Temp\cc1kZ7BP.o:client.c:(.text+0x3d): undefined reference to `udp_bind(udp_pcb*, ip_addr*, unsigned short)'
  
  C:\Users\ZACHAR~1\AppData\Local\Temp\cc1kZ7BP.o:client.c:(.text+0x5d): undefined reference to `udp_packet_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short)'
  
  C:\Users\ZACHAR~1\AppData\Local\Temp\cc1kZ7BP.o:client.c:(.text+0x69): undefined reference to `udp_recv(udp_pcb*, void (*)(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short), void*)'
  
  C:\Users\ZACHAR~1\AppData\Local\Temp\cc1kZ7BP.o:client.c:(.text+0x8e): undefined reference to `pbuf_free(pbuf*)'
  
  collect2: ld returned 1 exit status
I read something online about linking "lwip4", but have not been able to find anything about that file elsewhere. (I can't even figure out where I originally read that...)

I'm using "lwip-win32-msvc-0.1", which is based on the CVS version of lwIP from 23-01-2002.

The computer I am attempting to compile on is a Sony VPCF126FM, with no hardware modifications of any kind.

I'm using MiniGW command line " g++ client.c -o client.exe" to compile. (Nothing fancy.)

Can anybody help me out here? This has become a real sticking point.

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I managed to find "lwip4.dsp" and "lwip4.dsw" in the "lwip-win32-msvc-0.1\proj\msvc6" directory. I'm not sure these are the right files though, and attempting to link them with the following commands has not worked.

    -llwip4.dsp
    -llwip4.dsw
    -l lwip4.dsp
    -l lwip4.dsw
    -llwip4
    -l lwip4

    I keep getting some variation of "ld.exe: cannot find -llwip4".