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 :

[C++/CLR] Wrapper code C dans projet Visual C# >> erreurs à l'édition de lien


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 49
    Par défaut [C++/CLR] Wrapper code C dans projet Visual C# >> erreur compilation C2008
    Bonjour à tous,

    Je travaille sous Visual Studio 2005, sur un projet en C#. Depuis quelques jours, je dois intégrer un code source C d'un autre programme à mon code C#, pour cela je souhaite faire un wrapper.

    Ma première étape a consistée à intégrer le code source dans un projet "Class Library"' en Visual C++. Voici l'arborescence de mon projet pour l'instant :



    Cependant, je ne parviens pas encore à compiler le code source correctement.

    Pour l'instant, je rajoute mes fichiers .c et .h au fur et à mesure dans mon projet pour gérer correctement les dépendances.
    Visual studio m'a levé une première erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	1	Command line error D8045 : cannot compile C file 'skewangle.c' with the /clr option
    que je suis parvenu à éviter en modifiant l'extension des fichiers .c en .cpp.

    Or en ce moment, je reste bloqué sur une erreur de compilation différente : lors de la compilation du fichier skewangle.cpp incluant quelques fichiers headers .h, Visual Studio me sort une erreur C1083.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	2	fatal error C1083: Cannot open include file: 'xesup.h': No such file or directory
    Or le fichier xesup.h existe bien, et figure dans le répertoire Header Files du projet Visual Studio.
    L'entête du fichier skewangle.cpp est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include "stdafx.h"
     
    #include <xesup.h>
    #include <xehdr.h>
    #include "skewangle_exp.h"
    Voilà, si quelqu'un pourrait voler à mon secours, je lui en serais très reconnaissant.
    Par ailleurs, je connais à peine Visual Studio 2005, et je le découvre chaque jour au travail, de plus je me lance dans la réalisation d'un wrapper C, qui me parait assez compliqué, j'accepte donc avec joie toute aide / conseils !

    Merci par avance !
    Raph

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ne renomme pas tes .c en .cpp : Garde-les en .c, puis va dans les options du projet pour ces fichiers-là et désactive l'option /clr pour eux ("Common Language Runtime Support").
    Par contre, pour les headers manquants, il faudra voir ça de plus près. Peut-être ne sont-ils pas dans le même dossier que le code C ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 49
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Ne renomme pas tes .c en .cpp : Garde-les en .c, puis va dans les options du projet pour ces fichiers-là et désactive l'option /clr pour eux ("Common Language Runtime Support").
    Par contre, pour les headers manquants, il faudra voir ça de plus près. Peut-être ne sont-ils pas dans le même dossier que le code C ?
    Bonjour,

    Merci de tes réponses. J'ai suivi tes conseils pour les fichiers .c non plus renommés, en désactivant la prise en charge de CLR lors de la compilation.
    De plus le problème de recherche des headers est résolu. En effet, lorsque j'ajoutais un fichier .h dans mon projet celui n'était pas copié dans le répertoire de la solution et du coup il ne le trouvait pas ... un peu stupide à mon avis, mais enfin corrigé.

    Le problème C1083 est résolu !

    Par contre, j'ai un problème lors de l'édition de lien. Dont voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	3	error LNK2019: unresolved external symbol _XEHdrCreateHeader referenced in function _XEngSkewAngle
    Ce problème vient de plusieurs types implémentés dans d'autre fichier .c ou bien dans des librairies. Je voudrais inclure les librairies contenant ces déclarations. Je dispose de deux types de libraires, des .lib et des points .dll. Je ne parviens pas à les référencer dans mon projet, Visual Studio me répond que la DLL / LIB choisie n'est pas un contrôle ActiveX enregistré ou bien une assembly .NET.

    J'ai également ajouté le path d'une répertoire contenant les librairie au compilateur, pour qu'il aille les chercher lors de la compilation.
    Néanmoins, le problème persiste.

    Quelqu'un a-t-il une idée ? Ya-t-il un autre moyen d'inclure des librairie à Visual Studio ou bien faut-il que je recompile le code source de ces dernières pour les re-générer.

    Meric d'avance !
    Raph.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il faut ajouter le nom des .lib correspondant aux DLLs dans "Project Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 49
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Il faut ajouter le nom des .lib correspondant aux DLLs dans "Project Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies".
    Merci beaucoup l'ami, cela fonctionne en effet !
    Allez hop je mets un tag "Résolu par Médinoc"

    Néanmoins, je reposterais sans doute très vite, car je vais sans doute griller pas mal de neurones sur le wrapper C !!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/01/2015, 13h28
  2. Réponses: 0
    Dernier message: 19/04/2010, 14h37
  3. Erreur d'édition des liens dans un projet c++
    Par modafine dans le forum C++
    Réponses: 3
    Dernier message: 08/04/2009, 15h53
  4. [Visual Studio .Net 2003]Problème d'édition de liens
    Par Mindiell dans le forum Visual C++
    Réponses: 10
    Dernier message: 25/05/2007, 23h43
  5. Réponses: 3
    Dernier message: 26/01/2006, 13h11

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