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

C++ Discussion :

integrer un code C dans une application c++


Sujet :

C++

  1. #1
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    Par défaut integrer un code C dans une application c++
    Bonjour a tous.

    J'ai un code ecrit dans un nensemble de fichiers .c et .h et je veux l'appeler dans une application ecrite en c++ mais ça me génère toujours des erreurs lors de la compilation.

    Comment puis-je proceder pour l'intégrer dans mon application.

    Est ce que je dois le convertir en C++ ou bien est ce qui'il exiqte une comma,nde qui permet la compilation à la fois d'un programme c et c++.

    Remarque: je travaille sous linux (suse10.3)

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Un copier-coller des messages d'erreur (et du code pointé par ces messages) c'est toujours utile... Et puis il faudrait décrire un peu plus le contexte. Cette biblio C c'est une biblio open-source? C'est de toi? C'est compilé séparément ou pas?

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    De manière générale, si tu insère des fichiers sources écrits en "C pur", il faut indiquer au compilateur que cette partie bien particulière qui correspond à du code C "pur" doit être compilée... en C, et qu'il faut éviter la décoration des symboles qu'impliquerait une compilation en C++.

    Cela se fait généralement en introduisant une
    dans les déclarations.
    L'idéal est donc, si tu as l'autorisation de modifier le fichier d'en-tête de ton projet écrit en C de placer un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifdef __cplusplus__
    extern C
    {
    #endif
    avant la première déclaration (mais après la dernière inclusion de fichier) et un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef __cplusplus__
    } 
    #endif
    après la dernière déclaration.

    Je n'ai jamais testé, mais *peut-être* pourrais tu également te contenter d'un code proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern C
    {
    #include "tonfichier.h"
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

    Citation Envoyé par koala01
    Je n'ai jamais testé, mais *peut-être* pourrais tu également te contenter d'un code proche de
    Code :

    extern C
    {
    #include "tonfichier.h"
    }
    Si je peux me permettre koala01

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern "C"
    {
    #include "tonfichier.h"
    }
    Il faut rajouter les "" autour du C, sinon ca fonctionne pas.
    Je confirme ce code fonctionne pour intégrer du C dans une appli C++, déjà testé.

  5. #5
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    Par défaut
    En fait le code en C est celui d'un ocr open source (gocr). il comporte plusieurs fichiers .c et .h

    et il est compilé avec les commandes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gcc -g -02 -DHAVE_CONFIG_H -c -o gocr.o gocr.c
    gcc -o gocr gocr.o ./libPgm2asc.a -lm -L.
    En ce qui concerne le code en c++ c'est une application de segmentation d'image. Dons elle utilise la bibliothèque opencv. La commande de compilation est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -I/home/intel/opencv/include/opencv -L/home/intel/opencv/lib -lcv -lhighgui -lstdc++ application.cpp application
    Les deux programmes sont compilés sans aucune erreur quand ils sont séparés mais j'ai pas trouvé la commande qui les compile les deux ensembles.

    Merci de m'aider à faire cette intégration.


  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    C'est ce à quoi je pensais. En dépis du fait que tu n'aies toujours pas collé les messages d'erreur, ma boule de cristal me susurre que ça n'a rien à voir avec une erreur de compilation mais une erreur de link. Il faut lier la bibliothèque statique de gocr à ton programme.

  7. #7
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    Par défaut
    Salut et merci a vous tous.
    Leproblème est résolu.

    J'ai inclus le code ecrit en C comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    extern "C"
    {
    #include "include/gocr.h"
    #include "include/gocr.c"
    }
    Puis j'ai compiler avec les commandes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gcc -g -O2  -DHAVE_CONFIG_H -I/home/intel/opencv/include/opencv -L/home/intel/opencv/lib -lcv -lhighgui -lstdc++ -c -o monprog.o monprog.cpp
     
    g++ -I/home/intel/opencv/include/opencv -L/home/intel/opencv/lib -lcv -lhighgui -lstdc++ -o monprog monprog.o ./libPgm2asc.a -lm   -L.

    Remarque: J'utilise dans mon code la bibliothèque opencv.


    Merci.


  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 27
    Points : 31
    Points
    31
    Par défaut Window xp/intégré gocr sur visual studio cpp 2008
    Bonjour à tous,j'ai un soucis que je n'arrive pas à gérer .J'ai su intégré opencv sur visual studio 2008 mais j'ai du mal à le faire avec gocr.Comment intégré gocr sur visual studio 2008 (cpp).J'ai vraiment besoin de ça pour tester la sortie d'une extraction des données d'une image....Please help me ...

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    alors si tu veux plus de chance de réponses, évite le déterrage de sujet, commence un sujet avec ta question.
    pour l'intégrer...rajoute les headers dans l'inculdepath de ton projet, et pour ce qui est de compiler le fichiers d'implémentation C, ajoutes les en tant que sources C à ton projet.
    Si tu veux faire plus structuré, tu peux aussi créer une solution et définir un projet pour compiler l'OCR en C et un projet pour ton code client de l'OCR...

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 27
    Points : 31
    Points
    31
    Par défaut Problème résolu!
    Je pensais même pas avoir une réponse de si tôt... .J'ai réglé mon problème merci....J'aurais dû effectivement ouvrir un sujet dessus! .

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

Discussions similaires

  1. intégrer du code R dans une application java
    Par supcomingenieur dans le forum R
    Réponses: 3
    Dernier message: 04/06/2013, 13h48
  2. Utiliser un code MATLAB dans une application Android
    Par Spydeus dans le forum MATLAB
    Réponses: 5
    Dernier message: 17/11/2011, 01h07
  3. Intègration du code Ruby dans une application web Java
    Par L'aigle de Carthage dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 04/06/2011, 00h28
  4. integrer un module jaas dans une application swing
    Par riadhhwajdii dans le forum Sécurité
    Réponses: 0
    Dernier message: 11/11/2009, 10h56
  5. Réponses: 3
    Dernier message: 23/12/2008, 22h34

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