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!.