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 ?

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

    Erik