|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | |
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
J'ai tout désinstallé ocaml sur mon ordinateur.
Je suis allé sur debian.org J'ai voulu installé ocaml-3.10.2 Il me fallait ocaml-nox . Etc etc Au final j'ai installé tout ce qu'il m'a dit qu'il manquait (par paquets deb téléchargés sur le site) J'ai relancé le dec de camlimages Citation:
Je lance donc Ocaml rlwrap ocaml -> ok rlwrap ocaml graphics.cma -> ok rlwrap ocaml graphics.cma camlimages.cma -> Cannot find file camlimages.cma. Je m'y prends mal ? |
|
|
|
00
|
|
|
#22 | ||
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
C'est simple *si* tu as installé findlib, dans debian c'est le paquet ocaml-findlib.
Alors en toplevel, la commande suivante devrait marcher : Code :
Pourquoi télécharges-tu les paquets uns par uns au lieu d'utiliser apt-get pour les obtenir ? |
||
|
|
00
|
|
|
#23 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
Je ne suis pas passé par synaptics ou le terminal, car ca m'installait ocaml-3.10.0
et camlimages2.2 nécessite 3.10.2. Donc une fois parti sur le site pour récupérer les .deb, je n'étais plus à 2 paquets prêts pour installer camlimages ^^ La manip que tu me donnes c'est pour compiler et avoir un executable. Ce que je cherche à faire moi, c'est charger le fichier .ml à partir d'ocaml. à la fin seulement, compiler le tout. Etant donné que je perds du temps à apprendre la langage, j'aimerais gagné du temps à ne pas compiler à chaque fois : j'ai intégré le terminal dans gedit pour que j'aille plus vite. |
|
|
00
|
|
|
#24 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
Compiler un fichier Caml prend moins d'une seconde. Je ne pense pas qu'on puisse perdre du temps si on a les bons outils.
La manipulation avec des # (des directives toplevel) est à faire dans le toplevel (ou interpréteur interactive, qui est sans doute ce que tu appelles "ocaml"), et permet d'y activer camlimages simplement. |
|
|
00
|
|
|
#25 | |
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
Voici ce j'ai testé pour compiler (google):
Sans aucune utilisation de camlimages ça fonctionne bien Code :
ocamlc -I +labltk -o test labltk.cma graphics.cma nums.cma test.ml J'ai repris ce que tu m'avais donné : Code :
ocamlfind ocamlc -o tes -package camlimages -linkpkg test.ml Et voilà ce que je pense devoir obtenir Code :
ocamlfind ocamlc -I +labltk -o test labltk.cma graphics.cma nums.cma camlimages -linkpkg test.ml Citation:
Dois-je utiliser camlimages pour qu'il me le compile, ou ce n'est pas nécessaire ? edit : les directives top level sont bien fonctionnelles et ce même sans "code camlimages" Y'a pas de souci, mais maintenant, je préfère quand même vérifier le plus basique -_-" |
|
|
|
00
|
|
|
#26 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
C'est `-package camlimages` et pas `camlimages` tout seul. Par ailleurs, plutôt que tout le bloc `-I +labltk labltk.cma`, tu peux sans doute mettre `-package labltk`. De même, `-package graphics` et `-package num` (num et pas nums) sont tes amis. Pour voir la liste des paquets que ocamlfind connaît, `ocamlfind list`.
|
|
|
10
|
|
|
#27 | |||
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
Merci beaucoup je peux enfin compiler
![]() Code :
ocamlfind ocamlc -o test -package camlimages -package labltk -package graphics -package num -linkpkg test.ml Code :
Et à la compilation j'obtiens cette erreur Citation:
|
|||
|
|
00
|
|
|
#28 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
Chez moi ça marche. Tu es sûr que tu n'as pas oublié `-linkpkg` ?
|
|
|
00
|
|
|
#29 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
Oui j'ai bien rajouté '-linkpkg'
Je viens de rajouter -package camlimages.graphics ça compile Mais quand je lance mon exécutable par ./test j'ai cette erreur Fatal error: exception Invalid_argument("index out of bounds") et en passant par le toplevel idem - camlimages : connait pas Graphics_image - camlimages.graphics : out of bound J'ai l'impression que si ca continue comme ça, c'est la première et dernière fois que je touche à un projet prêtant du OCaml |
|
|
00
|
|
|
#30 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
"Index out of bounds" c'est une erreur à l'exécution, pas à la compilation. Il y a un tableau dans le programme à qui on demande un élément qui n'est pas dans son domaine de définition. C'est Sys.argv.(1), qui prend le premier élément en ligne de commande (comme le précise un commentaire dans le code) : tu as oublié de passer un paramètre en ligne de commande en exécutant le programme.
Ce serait dommage d'abandonner maintenant que tu as appris comment compiler un programme ! |
|
|
10
|
|
|
#31 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
Génial.
Merci beaucoup. Comme un abruti, j'ai modifié, tout content de moi, le commentaire : je n'avais pas lu la bonne ligne -_-" Pour sauvegarder, c'est Graphics.dump_image Images.save Mon_nom [] Mais ça me parait trop simple, |
|
|
00
|
|
|
#32 | ||
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
Code :
|
||
|
|
10
|
|
|
#33 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 27 ![]() |
Merci. Je n'étais pas loin, c'est même plus simple.
Là je bloquais sur l'utilisation en 2 temps: Premier temps Fonction 1 - ouvrir image - tracer un rectangle dessus Deuxième temps, Fonction 2 différente de 1 - enregistrer Dans enregistrer j'étais bloqué sur passer de pixels->image physique. J'utilisais dump_image au lieu de get_image. Graphics.make_image Matrice-> imageGraphics.dump_image Image -> matriceGraphics.get_image "Découpe" une imageGraphics.draw_image Dessine une imageMerci beaucoup |
|
|
00
|
|
|
#34 |
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
Bonjour,
je veux stocker dans une liste les coordonnées de la position de la souris quand je la bouge, en fait ça me servira après à sélectionner une zone dans la fenêtre graphique . voici ce que j'ai fait ! : ( est-ce que je suis sensée utiliser mouse_motion ?! (*------------------------------------------------------------------------------------------------------*) let clic im = let l = ref [] in let i = ref 0 in open_sho im; let rec aux () = match read_key() with |'s' -> (*start *) begin let attends = Graphics.wait_next_event [ Button_down] in let abscisse = attends.mouse_x and ordonnee = attends.mouse_y in l := maj_liste !l (abscisse,ordonnee); while attends.button do abscisse = attends.mouse_x; ordonnee = attends.mouse_y; l := maj_liste !l (abscisse,ordonnee); i := !i+1; done; aux (); end; |'c' -> close_graph() |_ -> aux() in aux (); !l;; |
|
|
00
|
|
|
#35 | ||
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com