We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello, I am getting the following error when I am trying to link my project:
*** ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC SYMBOL: ?_s_denormalise?BYTE MODULE: .\rsa_modexp.obj (RSA_MODEXP)
What can be the possible causes of this error? I looked at the discussion at http://www.keil.com/support/docs/1742.htm
But there is a difference between the situation illustrated there and mine. First of all, my symbol is not a variable but a segment name for the function s_denormalise written in assembly language. Secondly, I am not declaring this function as extern. I have this .A51 source file containing the implementation of s_denormalise and I have a header file(.h) containing the prototype declaration of s_denormalise. I am including this header file in my rsa_modexp.c file and using the function. Then how does this explanation accounts for my case?
If there can be any other cause for this error, please let me know.
Thanks and Regards, venkat.
"will I be able to generate compatibility between my C file and the assembly code?"
Again, did the code claim compatibility with Keil C51?
If it didn't, there's probably no point trying to make it so - you'll just end up fixing this problem and then running into another! :-( Your best bet then would probably be to create a "wrapper" between the assembler and the 'C' to convert the calling conventions.
If the code does claim compatibility with Keil C51, be sure to also check what version!
Then you will need to read http://www.keil.com/support/man/docs/c51/c51_ap_ctoasm.htm
If you're lucky, this will just be a matter of changing the Memory Model for the C51 compiler, and rebuilding...
The code did not claim any compatibility with C51. So, I guess i will have to tweak a little bit and try it out. As you said, writing a wrapper seems to be best solution. Thank you for your kind advice, it has been very helpful for us.
"... writing a wrapper ..."
A common model, I might add, but just a bit less so on '51 platforms.
Hello all, I am indeed lucky!.. I just had to change the memory model for this specific function declaration from Large to Small.
venkat.
why are you even in the totally wasteful LARGE model which is solely provided for those that do not feel they have the energy to take make the effort to write efficient code.
Erik
I am an undergraduate student doing this as part of a course. I understand that using Large model is wasteful. I am learning my lessons though, everyday and I learned from this discussion too... :)
venkat