We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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!.
Sorry, threads is closed. (should carefully check the accuracy of function declarations).