This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Link error on missing symbol that is there.

The symbol X shows up in the link map, but the linker still generates unresolved symbol errors for X in main. Any ideas?

File Main.c:

extern xdata X[];
static char xdata* p = X;

void main( void )
{
}

File Sub.c:

char xdata X[] _at_ 0x0012;

static char xdata* p = X;

Parents
  • You still need a dimension when creating the actual array. Otherwise the compiler doesn't actually assign space to the variable. (In the '167 compiler it produces a warning that the variable is assumed to be external.

    File Sub.c:
    
    char xdata X[5] _at_ 0x0012;
    
    static char xdata* p = X;

    or

    File Sub.c:
    
    char xdata X _at_ 0x0012;
    
    static char xdata* p = &X;


Reply
  • You still need a dimension when creating the actual array. Otherwise the compiler doesn't actually assign space to the variable. (In the '167 compiler it produces a warning that the variable is assumed to be external.

    File Sub.c:
    
    char xdata X[5] _at_ 0x0012;
    
    static char xdata* p = X;

    or

    File Sub.c:
    
    char xdata X _at_ 0x0012;
    
    static char xdata* p = &X;


Children