Hi, I got the above error when building a library. Though the library file was generated, because of this error, I don't think my library is working properly. Does anyone know what the problem is? Thank you in advance for your help.
Read the error message literally - I think it means exactly what it says? Presumably, it also named the symbol that it considers to be duplicated?
Thank you for the response. Yes it did give the module name and the public symbol. I think I figured out how to fix this problem (by using XBYTE). Thanks again.
I think I figured out how to fix this problem (by using XBYTE). Given the shortness on details it's hard to be sure, but I think you didn't really fix it --- you just brushed it under the carpet. If it was a named symbol before, and now it's a computed XRAM access using XBYTE, then something fishy is going on there. The real root of your problem is quite probably not fixed yet.
"I think you didn't really fix it --- you just brushed it under the carpet." My thoughts exactly - sounds like you have just suppressed the symptoms, not cured the underlying disease...
Thank you for the responses. Actually, the original symbol was a register address, declared as: static volatile Ucx SSelect _at_ 0xFE00; It was declared in a header file. Then later in a C file, I needed to use this variable so I included this header file and that was when I got the above error. I now removed the header file and added this line in my C file and it seems to be working properly, i.e. the value in SSelect in this C file looks correct in the trace: #define SSelect XBYTE[0xFE00] Thank you both for your thoughts and helps. I appreciate it.
"It was declared in a header file. Then later in a C file" Declarations and definitions are different! Confuse them, and this is exactly the problem you will get! See this thread: http://www.keil.com/forum/docs/thread3524.asp "I now removed the header file and added this line in my C file and it seems to be working properly, i.e. the value in SSelect in this C file looks correct in the trace: #define SSelect XBYTE[0xFE00]" Yes, as suspected earlier, you have not fixed the problem (the error in your header file) you have just swept it under the carpet by using this "hack" to access the memory location directly