• Unresolved symbol list downloading a Kernel module

    From IoClaudio@21:1/5 to All on Sun Dec 10 08:15:55 2017
    Hi guys,
    when I try to download a Downloadable Kernel Module on a target I have this error:
    "Unresolved symbol list: _Z12bspLedStateGetj ..."

    The problem is the function "bspLedStateGet" that in the code is used in this way:
    UINT32 ulStateGet;
    bspLedStateGet( BOARD_FAIL_LED, &ulStateGet );

    This function is declared in the file "kernel-CWV1908B/cwv1908_32r130/h/bspLed.h" whose path ("kernel-CWV1908B/cwv1908_32r130/h") is included in the Build Properties->Paths of the Workbench project.
    When I build the project I have no errors.

    The declaration is:
    /* Function Prototypes */
    STATUS bspLedStateGet( UINT32 ledId, UINT32 *state );

    The definition is in a precompiled library of the BSP.

    Why downloading the code on the target the linker (I suppose) can't resolve that symbol?
    How can I solve this problem?

    If in the project I add a file "myTest.c" with a function "myTest" that uses "bspLedStateGet" and I set "myTest" as entry point of the program then this function works correctly. So why in this case the symbol is resolved ?
    It seems that sometimes the symbols are resolved and sometimes not.

    Thank you

    cld

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From IoClaudio@21:1/5 to All on Tue Dec 12 03:11:50 2017
    Il giorno domenica 10 dicembre 2017 17:16:01 UTC+1, IoClaudio ha scritto:
    Hi guys,
    when I try to download a Downloadable Kernel Module on a target I have this error:
    "Unresolved symbol list: _Z12bspLedStateGetj ..."

    The problem is the function "bspLedStateGet" that in the code is used in this way:
    UINT32 ulStateGet;
    bspLedStateGet( BOARD_FAIL_LED, &ulStateGet );

    This function is declared in the file "kernel-CWV1908B/cwv1908_32r130/h/bspLed.h" whose path ("kernel-CWV1908B/cwv1908_32r130/h") is included in the Build Properties->Paths of the Workbench project.
    When I build the project I have no errors.

    The declaration is:
    /* Function Prototypes */
    STATUS bspLedStateGet( UINT32 ledId, UINT32 *state );

    The definition is in a precompiled library of the BSP.

    Why downloading the code on the target the linker (I suppose) can't resolve that symbol?
    How can I solve this problem?

    If in the project I add a file "myTest.c" with a function "myTest" that uses "bspLedStateGet" and I set "myTest" as entry point of the program then this function works correctly. So why in this case the symbol is resolved ?
    It seems that sometimes the symbols are resolved and sometimes not.

    Thank you

    cld


    I've solved uncommenting these lines in the file bspLed.h:

    //#ifdef __cplusplus
    //extern "C" {
    //#endif

    ...

    //#ifdef __cplusplus
    // }
    //#endif

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)