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

Library Creation and using Error: L127 and L128

Hello!
In my project I try to use some (made by me) library.
I create new project, add two source files, set Flahs/Configure Flash Tools/Output to Create Library, and build. After correct build without any errors or warnings i got LIB file in root of project. "Library project" containe two files:
signal_process_library.h

/*---------------------------------------------------------------------------
;
;
;
;       FILE NAME       : signal_process_lib.H
;       TARGET MCUs     : ANY
;       DESCRIPTION     : Header file for Signal Process Library
;
;       REVISION 0.0
;
;---------------------------------------------------------------------------*/

/****************************************************************************/
// Function defenition
/****************************************************************************/

unsigned char uchar_average_filter (unsigned char *buffer, unsigned char order);
char                                    schar_average_filter (char                                *buffer, unsigned char order);
unsigned int    uint_average_filter  (unsigned int  *buffer, unsigned char order);
int                                             sint_average_filter  (int                                       *buffer, unsigned char order);
unsigned long ulong_average_filter (unsigned long *buffer, unsigned char order);
long                                    slong_average_filter (long                                *buffer, unsigned char order);
float                             float_average_filter (float                           *buffer, unsigned char order);


and

/*---------------------------------------------------------------------------
;
;
;
;       FILE NAME       : signal_process_lib.C
;       TARGET MCUs     : ANY
;       DESCRIPTION     : Main routines for Signal Process Library
;
;       REVISION 0.0
;
;---------------------------------------------------------------------------*/

#include "signal_process_lib.h"


/****************************************************************************/
// Average filters
/****************************************************************************/

#define average_filter_loop                                                                                                                                     \ 
                for(counter = 0; counter<order; counter++){                                                  \ 
                        acc += buffer[counter];                                                                                                                         \ 
                }                                                                                                                                                                                                                               \ 

/****************************************************************************/
unsigned char ucahr_average_filter(unsigned char *buffer, unsigned char order){
unsigned char counter = 0;
unsigned int  acc = 0;

                average_filter_loop;

return (unsigned char)(acc/order);
}
/****************************************************************************/
char                                    schar_average_filter  (char *buffer, unsigned char order){
unsigned char counter = 0;
int                                     acc = 0;

                average_filter_loop;

return (char)(acc/order);
}
/****************************************************************************/
unsigned int    uint_average_filter (unsigned int  *buffer, unsigned char order){
unsigned char counter = 0;
unsigned long acc = 0;

                average_filter_loop;

return (unsigned int)(acc/order);
}
/****************************************************************************/
int                                     sint_average_filter  (int *buffer, unsigned char order){
unsigned char counter = 0;
long                                    acc = 0;

                average_filter_loop;

return (int)(acc/order);
}
/****************************************************************************/
unsigned long ulong_average_filter (unsigned long *buffer, unsigned char order){
unsigned char  counter = 0;
unsigned long acc = 0;

                average_filter_loop;

return (unsigned long)(acc/order);
}
/****************************************************************************/
long                                    slong_average_filter  (long *buffer, unsigned char order){
unsigned char counter = 0;
long                                    acc = 0;

                average_filter_loop;

return (long)(acc/order);
}
/****************************************************************************/
float                             float_average_filter  (float *buffer, unsigned char order){
unsigned char counter = 0;
float                           acc = 0;

                average_filter_loop;

return (float)(acc/order);
}
/****************************************************************************/


After.
I create new project with other routines and main routines (build correct with out signal_process_LIB.LIB)add signal_process_lib.h and signal_process_lib.LIB and try to rebuild but get errors:

*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _uchar_average_filter
    MODULE:  main.obj (MAIN)
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  _uchar_average_filter
    MODULE:  main.obj (MAIN)
    ADDRESS: 100004CH


Map files:

LX51 LINKER/LOCATER V4.58, INVOKED BY:
C:\KEIL\C51\BIN\LX51.EXE STARTUP.obj, init.obj, main.obj, .\Signal_Process_LIB.LIB TO SUDT7_ANSI_C_Firmware_V2.0 CLASSES
>>  (XDATA (X:0X0-X:0X7FF), HDATA (X:0X0-X:0X7FF), CODE (C:0X0-C:0X7FFF), CONST (C:0X0-C:0X7FFF), ECODE (C:0X0-C:0X7FFF)
>> , HCONST (C:0X0-C:0X7FFF))
...

      010003EBH   CODE     ---       _SPI_Init
      01000353H   CODE     ---       _Timer2_Init
      01000003H   CODE     ---       _Timer3_Init
      *EXTERN*    CODE     ---       _uchar_average_filter

Thanks for any help!.

0