[Question] About emwin library and embOS

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [Question] About emwin library and embOS

    HI..

    I am developing STM32F401 based on emos and emwin.

    However, I had some problems compiling. The problem is a link error.

    Even though the corresponding function required by the emwin library is defined, during the compile link, the compiler throws an error saying that the definition part of the function can not be found.

    I can not understand.


    Certain functions are defined in other C files, and this function is normally called from another function.

    The error in the compiler is as follows.

    Error[Li005]: no definition for "LCD_L0_Init()" [referenced from LCD.o(Emwin.a)]
    Error[Li005]: no definition for "LCD_L0_On()" [referenced from LCD.o(Emwin.a)]
    Error[Li005]: no definition for "LCD_L0_FillRect(int, int, int, int)" [referenced from LCD.o(Emwin.a)]
    Error[Li005]: no definition for "LCD_L0_SetLUTEntry(unsigned char, unsigned long)" [referenced from LCDColor.o(Emwin.a)]
    Error[Li005]: no definition for "LCD_L0_DrawBitmap(int, int, int, int, int, int, unsigned char const *, int, unsigned char const *)" [referenced from LCD.o(Emwin.a)]




    However, I have clearly defined the function below and it is not blocked by #IF.

    /*********************************************************************
    *
    * LCD_L0_Init
    */
    int LCD_L0_Init(void)
    {
    LCD_L0_ReInit();
    /* Init cache only one time */
    #if LCD_SUPPORT_CACHECONTROL
    _CacheStat =0; /* 0: No changes */
    _CacheLocked =0; /* 0: Not locked */
    #endif
    ZEROINIT(_aCache);
    #if LCD_CACHE
    memset(_aCacheDirty,1, sizeof(_aCacheDirty));
    #endif
    #if LCD_CACHE
    _FlushCache();
    #endif
    return 0; /* Init successfull ! */
    }


    And I get a link error in embOS .

    Error[Li005]: no definition for "OS_CreateTask_R" [referenced from C:\Nowwork\ST_GUI\EWARM\DC_OCR\Obj\main.o]

    I want to know where OS_CreateTask_R is defined.

    Thank you first for your answers.
  • Hi,

    For me this sound like a configuration issue.

    In general it shouldn't be required to define the LCD_L0_xxx() functions.

    Are you using a pre-compiled library offered by a silicon vendor (like STM)?

    Which emWin driver are you using?

    Can you post your configuration files (GUIConf.c/.h and LCDConf.c)?

    Are you using the proper embOS library?

    It seems you configured embOS to be used as release build but don't use the release library. In RTOS.h the function OS_CreateTask gets defined according to the different OS_LIBMODE settings. For example, if OS_LIBMODE_R is defined OS_CreateTask gets defined as OS_CreateTask_R. But, if OS_LIBMODE_R is defined and a debug library gets used, OS_CreateTask_R can't be found.

    Regards,
    Sven