Je compile sous Windows en utilisant gcc. J'ai l'erreur suivante dans une bibliothèque nommée 'Edje' :

lib/edje/edje_callbacks.c:436:3: error: initializer element is not constant
lib/edje/edje_callbacks.c:436:3: error: (near initialization for 'edje_callbacks[0].desc')

le code en question est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
static Eo_Callback_Array_Item edje_callbacks[] = {
  { EVAS_OBJECT_EVENT_HOLD, _edje_hold_signal_cb },
  { EVAS_OBJECT_EVENT_MOUSE_IN, _edje_mouse_in_signal_cb },
  { EVAS_OBJECT_EVENT_MOUSE_OUT, _edje_mouse_out_signal_cb },
  { EVAS_OBJECT_EVENT_MOUSE_DOWN, _edje_mouse_down_signal_cb },
  { EVAS_OBJECT_EVENT_MOUSE_UP, _edje_mouse_up_signal_cb },
  { EVAS_OBJECT_EVENT_MOUSE_MOVE, _edje_mouse_move_signal_cb },
  { EVAS_OBJECT_EVENT_MOUSE_WHEEL, _edje_mouse_wheel_signal_cb },
  { NULL, NULL }
};
la ligne 436 est la ligne du premier élément du tableau ci-dessus. Évidemment, l'erreur a lieu pour tous les éléments de ce tableau (sauf le dernier...)

la structure Eo_Callback_Array_Item est définie dans une bibliothèque nommée 'Eo' :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
struct _Eo_Callback_Array_Item
{
   const Eo_Event_Description *desc; /**< The event description. */
   Eo_Event_Cb func; /**< The callback function. */
};
_edje_hold_signal_cb est une fonction définie comme il faut.

Le problème semble être EVAS_OBJECT_EVENT_HOLD. Celui-ci est défini dans une 3ème bibliothèque nommée 'Evas' :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
EAPI extern const Eo_Event_Description _EVAS_OBJECT_EVENT_HOLD;
...
#define EVAS_OBJECT_EVENT_HOLD (&(_EVAS_OBJECT_EVENT_HOLD))
Je précise que EAPI est défini à __declspec(dllimport)

quelqu'un peut-il m'expliquer d'où vient l'erreur, ainsi que sa correction ?

merci