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

Error L103 - External attribute do not match public symbol..

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.

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

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

Children