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

BL51: How to stop build and prompt error when "Unresolved External Symbol"

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 ?

Parents Reply Children
  • 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.

    Erik