How to use a self created library and the default *.lib in Keil C ? and which and how to setup a default *.lib such as the following - c51s.lib ? c51L.lib ? c51c.lib ? ======================================= i have create a header file myfirst.h ======================================= #pragma SAVE #pragma REGPARMS extern char returndummychar(void); #pragma RESTORE ======================================== and the source code myfirst.c ======================================== char returndummychar(void) { return('a'); } ======================================== I compile the file and have myfirst.obj ======================================== lib51 create myfirst.lib lib51 add myfirst.obj to myfirst.lib ============================================ All the above steps are done. now, how to include the myfirst.lib in a new C project ?? Thank you very much !
I add the myfirst.lib to my project named maintest . maintest.c =================== #include <myfirst.h> void main(void) { unsigned char i,b; for (i=0;i<100;i++) { b=myfirst(); } } Linker .... WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL : MYFIRST MODULE : MAINTEST.OBJ (MAINTEST) WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL SYMBOL : MYFIRST MODULE : MAINTEST.OBJ (MAINTEST) ADDRESS : 0007H "MAINTEST" - O ERRORS, 2 WARNINGS WHY? Please help !
myfirst.h ========================== #pragma SAVE #pragma REGPARMS extern char myfirst(void); #pragma RESTORE myfirst.c ========================= char myfirst(void) { return('a'); } ========================= lib51 add myfirst.obj to myfirst.lib ========================= I add the myfirst.lib to my project folder named maintest . maintest.c =================== #include <myfirst.h> void main(void) { unsigned char i,b; for (i=0;i<100;i++) { b=myfirst(); } } Linker .... WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL : MYFIRST MODULE : MAINTEST.OBJ (MAINTEST) WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL SYMBOL : MYFIRST MODULE : MAINTEST.OBJ (MAINTEST) ADDRESS : 0007H "MAINTEST" - O ERRORS, 2 WARNINGS WHY? Please help !
I add the myfirst.lib to my project folder named maintest. Did you add the .LIB file to the project and not just to the project folder? The linker needs to know the name of the library file. Also, make sure that you specify libraries last in your project. Refer to http://www.keil.com/support/docs/1220.htm for more information about that. Jon
You can try the method mentioned in http://www.keil.com/support/docs/634.htm. This artical is about how to use library functions. chao.
I see a potential bug in your library function's source code. You don't #include the header file (myfirst.h) into the source code (myfirst.c). You should always do that, to enable the compiler to warn you about mismatches between the header and the implementation. Actually, I'm quite sure the definition of function myfirst() in myfirst.c is incompatible to its declaration in myfirst.h, and that's the real reason for the linker error messages you got.
You have created a function named returndummychar(), but you try to call a function named myfirst(), which doesn't exist in your project. Myfirst is the library name and not the function name you want to call. Holger