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

Visual C++ Discussion :

Visual C++ + librarie en C (certainement c99)


Sujet :

Visual C++

  1. #1
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut Visual C++ + librarie en C (certainement c99)
    Bonjour,

    J'ai un souci de compilation avec un librairie spécifique.
    Dans un .h, j'ai la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void copy_int_to_uchar (
        unsigned char *restrict dst, int *restrict src, int elements);
    A la compilation sous VISUAL C++ 10, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>d:\developpements\imglib\imglib_v201\test_drivers\drivers\common\mem_cpy.h(27): error C2146: erreur de syntaxe*: absence de ',' avant l'identificateur 'dst'
    Je ne sais pas si j'ai une option à modifier pour compiler ce code

    Merci

    VPM

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Je crois que la seule option, c'est de changer de compilateur, comme celui d'Intel.
    Mais vous n'êtes pas obligé de changer d'IDE.

  3. #3
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    Bon en fait j'ai recompilé la librairie sous visual c++ 8 et j'ai changé les restrict en __restrict

    http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx

    A+

    VPM

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    "__restrict" semble aussi exister sous VS2010.
    http://msdn.microsoft.com/en-us/libr...v=VS.100).aspx

    Avec une MACRO conditionnelle, je pense que la modification du code source serait inutile.

  5. #5
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    Salut,

    Qu'entends tu par Macro Conditionnelle?
    Je suis là pour apprendre et j'aimerais en savoir plus?

    VPM

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // si WANT_RESTRICT n'est pas defini
    // alors __restrict est redéfini à rien
    #ifndef WANT_RESTRICT
    #define __restrict
    #endif
    et tu définis ou non WANT_RESTRICT dans les options de ton projet ou avant d'inclure de .h qui pose problème
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    Ok j'ai essayé quelques chose du genre

    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
     
    #include <math.h>
    #define WANT_RESTRICT restrict
    #include <fichier_avec_rectrict.h>
     
     
    IplImage* imgT0 = 0,*imgT1 = 0;
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    #ifndef WANT_RESTRICT
    #define __restrict
    #endif
     
    char* filenameT0 = "T0.bmp";
     
        if( (imgT0 = cvLoadImage(filenameT0,-1)) == 0 )
            return 0;
     
     
    	char * dataT0 = imgT0->imageData;
    	unsigned char * data_out=new unsigned char [imgT0->width*imgT0->height];
     
    	fonction_restrict_probleme(dataT0,data_out,imgT0->width,imgT0->height);
     
        cvNamedWindow( "image", 1 );
        cvShowImage( "image", imgT0 );
        cvWaitKey(0);
        cvReleaseImage(&imgT0);
       cvDestroyWindow("image1");
    }

    Le resultat de la compilation est le suivant :
    chemin_de_la_lib\include\fichier_avec_rectrict.h(118) : error C2146: syntax error : missing ',' before identifier 'in'
    et en allant dedans je pointe sur le restrict :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void fonction_restrict_probleme
    (
        char *restrict in,   /* Input image data   */
        char       *restrict out,  /* Output image data  */
        short cols, short rows              /* Image dimensions   */
    );

    de plus j'ai le #define __restrict dans le code qui est grisé.


    Merci pour votre aide

    VPM

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Heu ... tu n'as pas fais ce que j'ai proposé

    Je te propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef WANT_RESTRICT
    #define __restrict
    #endif
    et tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define WANT_RESTRICT restrict
    Cela n'a rien à voir

    En fait, en regardant ton code, je me demande s'il faut redéfinir __restrict ou bien restrict mais de toute façon, l'esprit de ce qu'il faut faire est là.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    Merci ram-0000 de ton aide.

    J'ai essayé de faire ce que tu propose mais cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <math.h>
     
    #ifndef WANT_RESTRICT
    #define __restrict
    #endif
    #include <IMG_sobel_3x3_8_c.h>
     
     
    IplImage* imgT0 = 0,*imgT1 = 0;
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {

    Pour définir le WANT_RESTRICT il faut bien le définir comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define WANT_RESTRICT restrict
    et je le place où?

    Ce qui me gène c'est le restrict de la librairie en C

    Merci

    Jérôme

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je suppose que c'est le fichier IMG_sobel_3x3_8_c.h qui pose problème avec le restrict

    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
    #ifdef WANT_RESTRICT
       // __restrict et restrict gardent leur signification
    #else
       // __restrict et restrict son définis à "rien"
       #define __restrict
       #define restrict
    #endif
     
    #include <math.h>
     
    // mon compilateur ne supportant pas les options restrict du fichier IMG_sobel_3x3_8_c.h
    // la ligne suivante doit etre commentée
    // #define WANT_RESTRICT
    #include <IMG_sobel_3x3_8_c.h>
     
     
    IplImage* imgT0 = 0,*imgT1 = 0;
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    ...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  11. #11
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    Ok j'ai plus les erreurs à la compilation, mais à l'édition de lien cela ne passe pas :

    test.obj : error LNK2019: unresolved external symbol "void __cdecl IMG_sobel_3x3_8_cn(unsigned char const *,unsigned char *,short,short)" (?IMG_sobel_3x3_8_cn@@YAXPBEPAEFF@Z) referenced in function _wmain
    1>D:\Mes documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1120: 1 unresolved externals
    Je me demande la libraire (.lib) que j'appelle est compilée avec ces "restrict" cela ne peut-il pas poser problèmes?

    Merci

    VPM

  12. #12
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Tu es sûr dans tes options de link que tu as bien spécifié la librairie IMG_sobel_3x3_8_c (ou quelque chose comme cela) ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  13. #13
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    Oui, c'est la première chose que je vérifie quand j'ai ce genre d'erreur.
    Et la, tout est bien inclut. La librairie de traitement ainsi que le chemin d'accès au librairie et include.

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Moi, c'est plutôt à cela que je pensais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #if defined(_MSC_VER)
       #if (_MSC_VER >= 1400)
          #define restrict __restrict
       #else 
          #error "Version de VS non suppertée"
       #endif
    #else
       // Sous un compilateur non VS de M$
    #endif
    L'erreur montre que vous utilisez la décoration C++ et non C pour les fonctions que vous appelez.

    iI faut :
    -soit compiler vos sources en C (option /TC du compilateur)

    -soit prévenir le compilateur que se sont des fonctions c que vous voulez appeler.
    Par exemple avec extern "C" autour du #include du .h.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    extern "C" {
    #include <IMG_sobel_3x3_8_c.h>
    }

  15. #15
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut


    OK c'est bon, cela fonctionne.
    J'ai du tout de même ignorer LIBCD.lib

    Merci beaucoup à tous

    VPM

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

Discussions similaires

  1. JEDI Visual Component Library (JVCL)
    Par forum dans le forum Codes sources à télécharger
    Réponses: 4
    Dernier message: 08/05/2021, 01h15
  2. ABF Visual Components Library
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 10/08/2013, 15h32
  3. EDI Visual Component Library
    Par souminet dans le forum Débuter
    Réponses: 5
    Dernier message: 15/09/2008, 10h07
  4. Microsoft Visual C++ Runtime library
    Par azde7015 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 13/01/2007, 10h47
  5. JEDI Visual Component Library !!
    Par cat1982 dans le forum Delphi
    Réponses: 5
    Dernier message: 11/05/2006, 19h09

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