IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Error: Unbound value GtkBaseProps.Window.cast


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Error: Unbound value GtkBaseProps.Window.cast
    Bonjour comme l'indique le titre j'ai un souci lors de la compilation de mon code etant donne qu'il ne trouve pas le module dans les libs de ocaml/lablgtk2.

    le XML test.glade :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    <?xml version="1.0"?>
    <glade-interface>
      <!-- interface-requires gtk+ 2.16 -->
      <!-- interface-naming-policy project-wide -->
      <widget class="GtkWindow" id="window1">
        <child>
          <widget class="GtkHPaned" id="hpaned1">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <child>
              <widget class="GtkVPaned" id="vpaned1">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="orientation">vertical</property>
                <child>
                  <widget class="GtkMenuBar" id="menubar1">
                    <property name="visible">True</property>
                    <child>
                      <widget class="GtkMenuItem" id="menuitem1">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">_File</property>
                        <property name="use_underline">True</property>
                        <child>
                          <widget class="GtkMenu" id="menu1">
                            <property name="visible">True</property>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem1">
                                <property name="label">gtk-new</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem2">
                                <property name="label">gtk-open</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem3">
                                <property name="label">gtk-save</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem4">
                                <property name="label">gtk-save-as</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
                                <property name="visible">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem5">
                                <property name="label">gtk-quit</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                          </widget>
                        </child>
                      </widget>
                    </child>
                    <child>
                      <widget class="GtkMenuItem" id="menuitem2">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">_Edit</property>
                        <property name="use_underline">True</property>
                        <child>
                          <widget class="GtkMenu" id="menu2">
                            <property name="visible">True</property>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem6">
                                <property name="label">gtk-cut</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem7">
                                <property name="label">gtk-copy</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem8">
                                <property name="label">gtk-paste</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem9">
                                <property name="label">gtk-delete</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                          </widget>
                        </child>
                      </widget>
                    </child>
                    <child>
                      <widget class="GtkMenuItem" id="menuitem3">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">_View</property>
                        <property name="use_underline">True</property>
                      </widget>
                    </child>
                    <child>
                      <widget class="GtkMenuItem" id="menuitem4">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">_Help</property>
                        <property name="use_underline">True</property>
                        <child>
                          <widget class="GtkMenu" id="menu3">
                            <property name="visible">True</property>
                            <child>
                              <widget class="GtkImageMenuItem" id="imagemenuitem10">
                                <property name="label">gtk-about</property>
                                <property name="visible">True</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                              </widget>
                            </child>
                          </widget>
                        </child>
                      </widget>
                    </child>
                  </widget>
                  <packing>
                    <property name="resize">False</property>
                    <property name="shrink">True</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkDrawingArea" id="drawingarea1">
                    <property name="visible">True</property>
                  </widget>
                  <packing>
                    <property name="resize">False</property>
                    <property name="shrink">True</property>
                  </packing>
                </child>
              </widget>
              <packing>
                <property name="resize">False</property>
                <property name="shrink">True</property>
              </packing>
            </child>
            <child>
              <widget class="GtkButton" id="Quit">
                <property name="label" translatable="yes">button</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="receives_default">False</property>
              </widget>
              <packing>
                <property name="resize">True</property>
                <property name="shrink">True</property>
              </packing>
            </child>
          </widget>
        </child>
      </widget>
    </glade-interface>
    Le loader basique pris sur l'exemple de SpiceGuid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    (*Gladeconverter.ml*)
    let load_xml () =
    let xml =
       Glade.create ~file:"test.glade" ()
    in let window = new GWindow.window
       (GtkBaseProps.Window.cast(Glade.get_widget xml "window1"))
    in let button = new GButton.button
       (GtkButtonProps.Button.cast(Glade.get_widget xml "Quit"))
    in button#connect#clicked ~callback:
       (fun () -> print_endline "Bye"; window#destroy (); GMain.Main.quit ());
       window#show ();
       GMain.Main.main ()
     
     
    let main () =
    	load_xml ()
     
    let _ = main ()

    La ligne de compile que j'utilise (biensur il manque le gtkBaseProps que je trouve pas dans les libs):

    ocamlopt -o test -I +lablgtk2 lablgtk.cmxa gtkInit.cmx glade.cmx lablglade.cmxa gtkBase.cmx gladeconverter.ml
    File "gladeconverter.ml", line 6, characters 4-28:
    Error: Unbound value GtkBaseProps.Window.cast

  2. #2
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Ces modules GtkBaseProps et GtkButtonProps étaient encore présents dans LablGtk version 2.12 mais ils ne le sont plus dans LablGtk version 2.14.

    Mon code utilise probablement une fonctionnalité obsolète, cacophrène qui est notre grand magicien LablGtk va sans doute t'expliquer la bonne manière de faire, sinon en attendant tu peux toujours expérimenter du côté de Gobject.try_cast qui me paraît être assez proche de la fonctionnalité recherchée.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    ok Je vais essayer dans cette direction.

    J'essaye aussi de faire du gtk a la main car il me faut une gl_area dans une fenetre sous peu...

    Si vous avez un glGtk.cmxa je suis preneur car ma version ne gere pas le GlGtk.area

    merci bcp

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Je crois qu'il faut d'abord installer LablGL :

    http://wwwfun.kurims.kyoto-u.ac.jp/s...bl/lablgl.html

    Puis réinstaller LablGtk2 avec l'option --with-gl.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Salut !

    Concernant les fichiers Props manquants : c'est vraiment très curieux, et je ne trouve rien qui les remplace (même pas dans les caractéristiques de LablGTK 2.14 dans le fichier CHANGES). En plus ils sont toujours visibles dans la documentation HTML en ligne. Autre drôlerie, si on suit la procédure d'installation avec ./configure && make world, les fichiers Props sont bien créés !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $ cd src
    $ ls gtk*Props.cm[iox]
    gtkActionProps.cmi     gtkButtonProps.cmx  gtkPackProps.cmo
    gtkActionProps.cmo     gtkEditProps.cmi    gtkPackProps.cmx
    gtkActionProps.cmx     gtkEditProps.cmo    gtkRangeProps.cmi
    gtkAssistantProps.cmi  gtkEditProps.cmx    gtkRangeProps.cmo
    gtkAssistantProps.cmo  gtkFileProps.cmi    gtkRangeProps.cmx
    gtkAssistantProps.cmx  gtkFileProps.cmo    gtkSourceView2Props.cmi
    gtkBaseProps.cmi       gtkFileProps.cmx    gtkSourceView2Props.cmo
    gtkBaseProps.cmo       gtkListProps.cmi    gtkSourceView2Props.cmx
    gtkBaseProps.cmx       gtkListProps.cmo    gtkSourceViewProps.cmi
    gtkBinProps.cmi        gtkListProps.cmx    gtkSourceViewProps.cmo
    gtkBinProps.cmo        gtkMenuProps.cmi    gtkSourceViewProps.cmx
    gtkBinProps.cmx        gtkMenuProps.cmo    gtkTextProps.cmi
    gtkBrokenProps.cmi     gtkMenuProps.cmx    gtkTextProps.cmo
    gtkBrokenProps.cmo     gtkMiscProps.cmi    gtkTextProps.cmx
    gtkBrokenProps.cmx     gtkMiscProps.cmo    gtkTreeProps.cmi
    gtkButtonProps.cmi     gtkMiscProps.cmx    gtkTreeProps.cmo
    gtkButtonProps.cmo     gtkPackProps.cmi    gtkTreeProps.cmx
    Par contre quand on installe avec make install, ces fichiers ne sont pas copiés dans le dossier de destination. C'est étrange, pour ne pas dire plus... Il faudrait pousser les investigations plus loin pour savoir d'où vient le souci (j'ai envoyé un mail dans la liste de diffusion de LablGTK pour savoir ce qu'il en est). En attendant la commande suivante résout le problème :

    cp gtk*Props.cm[iox] $(ocamlc -where)/lablgtk2

    Avec ça j'arrive à compiler ton code sans problème.

    Citation Envoyé par kulssaka
    J'essaye aussi de faire du gtk a la main car il me faut une gl_area dans une fenetre sous peu...
    Je n'ai rien à ajouter à ce qu'a déjà dit SpiceGuid. Il faut d'abord installer LablGl.

    Cordialement,
    Cacophrène

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    merci beaucoup grace a toi j'ai bien avance

    j'ai cependant des soucis pour la compilation et etant donne que tu as pu compiler mon code pourrais tu m'eclaircir sur mes lignes de compilation si ce n'est abuser de ta personne ?

    alors j'ai essaye ces lignes la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ocamlopt -o test -I +lablgtk2 lablgtk.cmxa gtkInit.cmx gtkBaseProps.cmx gladeconverter.ml
    File "gladeconverter.ml", line 9, characters 3-110:
    Warning S: this expression should have type unit.
    File "gladeconverter.ml", line 1, characters 0-1:
    Error: No implementations provided for the following modules:
             Glade referenced from gladeconverter.cmx
    j'ai creer le gtkBaseProps.cmxa et est remplace le cmx par celui ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ocamlopt -o test -I +lablgtk2 lablgtk.cmxa gtkInit.cmx gtkBaseProps.cmxa gladeconverter.ml
    File "gladeconverter.ml", line 9, characters 3-110:
    Warning S: this expression should have type unit.
    File "gladeconverter.ml", line 1, characters 0-1:
    Error: No implementations provided for the following modules:
             Glade referenced from gladeconverter.cmx
    Me suis dit qu'il manquait glade, mais il m'aurait mis unbound value, j'ai quand meme teste avec glade.cmx ou glade.cmxa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ocamlopt -o test -I +lablgtk2 lablgtk.cmxa gtkInit.cmx glade.cmx gtkBaseProps.cmx gladeconverter.ml
    File "gladeconverter.ml", line 6, characters 4-28:
    Error: Unbound value GtkBaseProps.Window.cast
     
    ocamlopt -o test -I +lablgtk2 lablgtk.cmxa gtkInit.cmx glade.cmxa gtkBaseProps.cmx gladeconverter.ml
    File "gladeconverter.ml", line 6, characters 4-28:
    Error: Unbound value GtkBaseProps.Window.cast
    Je dois etre neuneu je vois pas ce qui va pas ><

    edit : PS : dsl si il n'y a pas d'accents je suis en qwerty u_u

  7. #7
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Re !

    J'ai utilisé ceci :

    ocamlopt -w s -I +lablgtk2 lablgtk.cmxa gtkInit.cmx lablglade.cmxa gladeconverter.ml -o gladeconverter

    Cette commande fonctionne si les modules Props ont été préalablement ajoutés dans le répertoire lablgtk2, comme indiqué dans mon procédent message.

    Cordialement,
    Cacophrène

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Merci bcp !

  9. #9
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour !

    Je viens de recevoir une réponse de Jacques Garrigue suite à mon message sur la liste de diffusion. Les modules Props ne figurent pas dans le dossier lablgtk2 car ils ne devraient généralement pas être utilisés directement. Pourquoi ? Parce que leur interface est exportée dans les modules gtk* comme GtkButton et GtkWindow. N'étant pas utilisateur de Glade, c'est un problème auquel je n'ai jamais été confronté et, à vrai dire, je n'aurais pas pensé que le problème de compilation venait précisément de leur utilisation . En définitive, il n'est donc pas utile de copier ces modules. Il suffit d'écrire (parties importantes en vert) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    let load_xml () =
      let xml = Glade.create ~file:"test.glade" () in
      let widget = Glade.get_widget xml "window1" in
      let window = new GWindow.window (GtkWindow.Window.cast widget) in
      let widget = Glade.get_widget xml "Quit" in
      let button = new GButton.button (GtkButton.Button.cast widget) in
      button#connect#clicked ~callback:(fun () ->
        print_endline "Bye";
        window#destroy ();
        GMain.quit ());
       window#show ();
       GMain.main ()
    
    let _ = load_xml ()
    Compilation avec ocamlopt -w s -I +lablgtk2 lablgtk.cmxa lablglade.cmxa gtkInit.cmx gladeconverter.ml -o gladeconverter

    Voilà, je crois que maintenant c'est vraiment résolu.

    Cordialement,
    Cacophrène

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2012, 18h32
  2. [lablgtk2 et ocaml]Unbound value GMain.init
    Par amiroushka dans le forum Caml
    Réponses: 16
    Dernier message: 09/11/2009, 22h48
  3. Réponses: 1
    Dernier message: 03/05/2009, 21h43
  4. Error getting value ?
    Par jacpapac dans le forum JSF
    Réponses: 3
    Dernier message: 02/02/2007, 11h04
  5. [OCaml] Toujours "Unbound value..."
    Par robfinck dans le forum Caml
    Réponses: 1
    Dernier message: 16/11/2004, 22h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo