CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[code::blocks] import de librairie

mecafreezer5
mecafreezer5
Niveau 6
27 juin 2009 à 20:53:12

Bonjours, je poste car je n'arrive pas à intégrer des librairies dans mes projets C++ code::blocks.
Je veux utiliser opencv, je l'ai donc installer sur ma arch (archlinux), les .h et .hpp de opencv se trouvent dans /usr/include/opencv/ mais pas moyen qu'ils soient pris en compte lors de la compilation.
Je demande donc votre aide ...

godrik
godrik
Niveau 30
27 juin 2009 à 21:10:43

ils devraient l'etre.
je pense que gcc regarde par defaut dans /usr/include. donc si tu as un fichier dans /usr/include/opencv/foo.h a inclure, tu devrais pouvoir le faire avec

  1. include <opencv/foo.h>

dans ton code C.

Si la facon "correcte" pour opencv est d'inclure directement foo.h (ca serait tres tres moche, mais ca arrive parfois), alors il faudrait rajouter un parametre a GCC pour qu'il cherche les fichiers a include dnas /usr/include/opencv. C'est l'option

-I /usr/include/opencv

Cependant, ca c'est pour la compilation et pas pour l'edition de lien. Tu n'as pas parler des fichiers objets de la lib.

Quel est ton erreur de compilation ?

mecafreezer5
mecafreezer5
Niveau 6
27 juin 2009 à 22:24:12

Déjà merci de me consacrer un peu de temps !
Alors j'utilise bien gcc et le #include<opencv/foo.h> (bien sur foo.h est remplacé par le bon header) ne fonctionne pas.
Il ne me trouve pas les objets spécifiques à opencv.

J'ai ajouté le linker (-l /usr/include/opencv) et là bizard, il me dit : "ld cannot find -l/usr/include/opencv".
Ce dossier existe pourtant bien.

godrik
godrik
Niveau 30
27 juin 2009 à 22:35:59

Ah, chris m'avait prevenu pourtant :)
C'etait un i majuscule et pas un l minuscule.

Mais ca me donne une information suplementaire, tu arrives jusqu'au linker. Ce n'est donc pas un probleme de compilatoin mais de linkage.
essaye de rajouter -lcv au linker (ici c'est un l minuscule)

Ou est installe la libcv en elle meme ?

mecafreezer5
mecafreezer5
Niveau 6
27 juin 2009 à 22:46:51

Oui mais j'avais essayé les deux (le -I et le -l).
Maintenant avec le -lcv j'ai cette erreure :

-------------- Build: Debug in opencv ---------------

Linking console executable: bin/Debug/opencv
/usr/include/opencv: file not recognized: Is a directory
collect2: ld a retourné 1 code d'état d'exécution
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings

Pour ce qui est de la libcv je ne la trouve pas (ni libopencv ou quelque chose du genre)

godrik
godrik
Niveau 30
27 juin 2009 à 23:12:54

donne moi la ligne de compilation aussi et vire le -I /usr/include/opencv

mecafreezer5
mecafreezer5
Niveau 6
27 juin 2009 à 23:29:48

Je ne sais pas exactement, c'est code::blocks qui gère ça.
Mais grossierement c'est ça : gcc -lcv /usr/include/opencv test.cpp -o test

Cette ligne de commande en console me renvoie la même sortie que mon poste précédent.

chris_27
chris_27
Niveau 10
27 juin 2009 à 23:30:55

Tu as installé le paquet libopencv (et le paquet libopencv-dev s'il existe) ?

mecafreezer5
mecafreezer5
Niveau 6
27 juin 2009 à 23:40:07

Non c'est deux paquets n'existent pas (du moins dans les dépots de arch). J'ai installé opencv, ce qui devrait être suffisant pour arch d'aprés ce que j'ai lu.

godrik
godrik
Niveau 30
27 juin 2009 à 23:44:56

vire /usr/include/opencv

mecafreezer5
mecafreezer5
Niveau 6
28 juin 2009 à 10:37:28

Si je vire /usr/include/opencv j'ai l'erreur du tout début. Gcc ne me trouve pas les objets spécifiques à opencv.

mecafreezer5
mecafreezer5
Niveau 6
28 juin 2009 à 11:37:10

OK OK j'ai résolu mon problème ! Je suis en fait nouveau sur archlinux et j'ai encore un peu de mal avec pacman/yaourt. Il fallait que j'installe en plus le paquet opencv-svn.
Voila merci de votre aide. Bonne continuation

dnob700
dnob700
Niveau 10
28 juin 2009 à 14:56:06

"J'ai ajouté le linker (-l /usr/include/opencv) et là bizard, il me dit : "ld cannot find -l/usr/include/opencv". "

Ce n'est pas la bonne option. -I (i majuscule) sert à spécifier un dossier de recherche des fichiers d'en tête. -l (L minuscule) sert à spécifier un fichier de bibliothèque et -L sert pour un dossier de recherche pour les bibliothèque. Donc toi, tu as besoin de -L /usr/lib/opencv peut-être pour le linker (mais pas forcément, et il semble que non vu que ça a fni par fonctionner) et certainement de -lopencv ou -lcv (ici c'est un L minuscule) selon le nom du fichier de la bibliothèque qui doit être liée. Par contre, tu n'a pas besoin de -I /usr/include/opencv (ici c'est un i majuscule) car dans ton code, tu fait #include<opencv/foo.h> et donc tu lui donne déjà le nom du dossier opencv. Le dossier /usr/include est de toutes manière dans le chemin de recherche des entêtes. Si tu utilise cette option de la ligne de commande, alors, tu peut directement faire #include <foo.h>.

(je suis bien conscient que ton problème était résolu, mais c'est juste pour détailler la solution).

mecafreezer5
mecafreezer5
Niveau 6
28 juin 2009 à 18:46:08

Ok merci quand même je me coucherai moins bête !

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment