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

VC++ .NET Discussion :

C++.Net et natif dans une meme solution


Sujet :

VC++ .NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut C++.Net et natif dans une meme solution
    Alors voila le topo.
    J'ai un projet nommé "ETPC" en C++ natif qui se compile parfaitement bien.
    J'ai un autre projet nommé "ETPC_tester" en C++ CLR qui marche très bien aussi.

    Maintenant, je voudrais utiliser ETPC dans ETPC_tester. J'ai crée une solution qui contient les deux projets.

    Dans le fichier TextEditor.h du projet ETPC_tester, je voudrais utiliser les variables/classes qui sont dans Tokenizer.h du projet ETPC. J'ai donc mis
    #include "Tokenizer.h" dans TextEditor.h

    il dit qu'il voit pas le fichier "Tokenizer.h". Si j'inclus les repertoires du projet ETPC dans la configuration du projet ETPC_tester, bien sur il voit le fichier, mais il dit qu'il ne trouve pas les variables externes.

    Comment on configure tout ça pour que ca marche?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    Dans ton projet .Net tu doit ajouter la référence de ton prog C++ natif.
    Bouton droit sur références dans l'explorateur de solution --> Add References. Tu dois pouvoir choper soit dans l'onglet "projet" le projet C++ natif soit dans l'onglet "Browse" la DLL ou l'exe de ton ancien projet.

    Une fois que c'est fiat tu peux faitr les includes nécessaires dans tes différents fichier.

    Bonne chance

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut
    Ca marche pas.. j'avais déjà essayé.

    ca me met:
    Error 1 fatal error C1083: Cannot open include file: 'Tokenizer.h': No such file or directory c:\documents and settings\onur\mes documents\visual studio 2005\projects\etpc_tester\etpc_tester\TextEditor.h 10


  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Je suppose que le projet ETPC natif génère une DLL.

    Pour l'utiliser dans un projet managé ou non, il faut un fichier .h (définitions et prototypes de la DLL) et un fichier .lib généré en même temps que la DLL.

    Il faut inclure le fichier .h dans le projet de test et référencer le .lib pour le lier au projet (on peut en plus les copier dans le dossier du projet).
    Pour référencer un .lib dans Visual C++ 2005, il faut ouvrir les propriétés du projet (menu Project/Properties), ensuite ouvrir Configuration Properties/Linker/Input/Additional Dependencies et ajouter le nom du fichier .lib.

  5. #5
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Par rapport à ce que dis NicolasG, une petite remarque, cela ne marche que si le .lib et ton projet MC++ sont compiler avec la même version du compilateur.

    Par exemple un .lib fait avec VC++ 6 ne peut être utilisé avec VC++ 2003.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut
    non mon code natif crée un .exe

    En fait, dans ETPC il y a un LectureFichier.cpp qui contient un main,
    et utilise les autres fichiers de ce projet en faisant des #include.

    et dans ETPC_tester, je voudrais faire comme le LectureFichier.cpp de ETPC, faire des #include et utiliser les classes etc.
    Je ne peux donc pas faire un gros fichier .h, d'autant plus que toutes mes classes sont bien définies avec un fichier .h pour chacune.

    Edit: ajout: En fait, je voudrais pouvoir utiliser toutes les classes de ETPC, que ca soit en ajoutant un projet non managé ou directement en mettant les fichiers dans le projet managé (mais dans ce cas, le compilo n'est pas content.. alors que c++ clr est censé etre crée pour justement faire du .NET et etre compatible avec du code c++ existant )

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut
    D'après ce que je comprends, ils en parlent dans cette video du fait qu'il y a pas besoin de passer par un dll pour utiliser du code existant:

    http://channel9.msdn.com/Showpost.aspx?postid=20487

    entre les temps 5min50sec et 6min20sec

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Citation Envoyé par onur
    D'après ce que je comprends, ils en parlent dans cette video du fait qu'il y a pas besoin de passer par un dll pour utiliser du code existant:

    http://channel9.msdn.com/Showpost.aspx?postid=20487

    entre les temps 5min50sec et 6min20sec
    Tu as malheureusement mal compris.
    Ce qui est possible est de compiler du code C++ existant en MSIL plutôt qu'en natif (par défaut pour VC++).
    Ce qui offre la possibilité d'utiliser le framework sans transition natif/managé.

    Il n'est pas question d'utiliser les fonction d'un autre exe.

    Donc, tu peux très bien utiliser du code C++ existant sans passer par une dll mais dans ce cas, il faut copier ce code dans ton application.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut
    Oui. Il suffisait juste de mettre l'option precompiled headers à "ne pas faire". Encore fallait-il le savoir.. :s c'est pas super intuitif mais bon

    Merci à tous pour l'aide

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

Discussions similaires

  1. appel entre 2 projets silverlight dans une meme solution
    Par Etudiante_Ines dans le forum Silverlight
    Réponses: 3
    Dernier message: 28/04/2011, 17h31
  2. Find et mv dans une même commande
    Par Yann21 dans le forum Linux
    Réponses: 3
    Dernier message: 28/02/2005, 10h49
  3. [VB.NET] Contrôle personnalisé dans une dll personnalisée
    Par c3b12 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/10/2004, 07h56
  4. [VB.NET] Objet .Tag dans une ListView
    Par Lois dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/10/2004, 16h35
  5. [VB.NET] Disparition scrollBar dans une DataGrid
    Par aphykite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/10/2004, 10h29

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