Title says it all. It's driving me nuts because the BL51 completes building a wrong Hex file even there is a "Unresolved External Symbol" warning. It should be an ERROR, not just a warning. How come my program references to a non-exist routine, and BL51 just says it is a warning ? It doesn't make sense. Is there any solution to work it out ?
Is there any solution to work it out ?
yes, fix the unresolved :)
there was, once when the king of diamond were still a jack, a desire to use the link and patch. I guess this is a leftover.
anyhow, you see the warning (and, fortunately, as opposed to compiler warnings, it DOES come out on a rebuild) are you just arguing the 'label' (warning) or do you have an actual problem?
Erik
"It should be an ERROR, not just a warning"
I think you'll find that there is a separate Error?
ISTR that you only get the Error when you actually reference the unresolved symbol?
Let me explain my problem in more detail. I declared an external function and referenced it in, say "222.c", but I forgot to declare the exact function body that are supposed in, say "111.c". Keil completed building the project ("111.c" and "222.c"), with warnings of course. So I "trusted" Keil's result 100% and thought I was good. When I tested my project, it ran wild without a clue. After hours of debugging, I went back to see the compiler message, and found I missed the function body. Yes, it's my mistake, but isn't it normal to think when it completes the building process, there shouldn't be any ERROR in term of program execution ? I never have such issue in another compiler/linker. I have tried to set the warning level but in vain. As Keil is the king of 8051 tools, I expect it to be more professional.
Keil completed building the project ("111.c" and "222.c"), with warnings of course. YOUR problem, not Keil. you would have the same issue with IAR, SDCC, GNU, .....
to ass u me that something will do something meaningful when warnings exist is ... naah will not use that word.