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

MFC Discussion :

--> intéropérabilité c++ c#


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut [RESOLU] --> intéropérabilité c++ c#
    Bonjour,
    je voudrais savoir comment il est possible d'utiliser une bibliotheque de classe écrite en c#.net dans une application vs c++.net.
    je sais que c possible mais je ne sais pas comment.
    merci
    fabien

  2. #2
    Membre actif

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Par défaut Re
    De la même manière que tu integres tes librairies dans un projet C#. En fait avec .NET c'est un peu l'aspect qui change ( A savoir le language que tu utilises importe peu) mais au final le résultat est le même. Puisque le compilateur génerera dans tous les cas un CLR (Pseudo langage de base).

    Donc ex :

    Un projet C# : ClassLibrary1
    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
     
    using System;
     
    namespace ClassLibrary1
    {
    	/// <summary>
    	/// Description résumée de Class1.
    	/// </summary>
    	public class Class1
    	{
    		public Class1()
    		{
    		}
     
    		public void Test () 
    		{
    			System.Console.WriteLine( "Class1::Test [Calling]" );
    		}
    	}
    }

    Un projet C++ : ClassTest
    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
     
    #include "stdafx.h"
     
    #using <mscorlib.dll>
    #using <ClassLibrary1.dll>
    #include <tchar.h>
    #include <stdio.h>
     
    using namespace System;
     
     
    // Il s'agit du point d'entrée pour cette application
    int _tmain(void)
    {
      Console::WriteLine(S"Hello World");
     
    	ClassLibrary1::Class1 * pClasse1 = new ClassLibrary1::Class1();
    	pClasse1->Test();
    	return 0;
    }

    Important :
    Pour que ça ne plante pas, il faut imperativement que : La dll "ClassLibrary1.dll" soit :
    - dans le même répertoire que l'exécutable
    - Ou dans le repertoire FrameWork (ex:C:\WINNT\Microsoft.NET\Framework\v1.0.3705)
    - Ou dans le rep System32.

    Enfin dans un chemin valide défini dans le path de WIndows. Pour quelle soit linkée au départ.


    Il y a une petite subtilité pour le destructeur En C# il faut utilisr la méthode finalize. Et de plus force ton projet à utiliser le mode managed avec


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut
    le probleme c que le projet n'est pas managé; cela pose-t-il un gros probléme?
    Je n'ai pas compris ce que tu voulais dire pour la methode finalize?cela ne concerne que le code c# ?
    merci
    fabien

  4. #4
    Membre actif

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Par défaut Re
    Je pense que oui. Renseignes toi sur le forum Développement DotNet.
    http://213.186.40.31/forums/viewforum.php?f=49
    Ils(elles) sont beaucoup plus califié(es)

    sinon :

    http://www.dotnet-fr.org/documents/andymc_csharp_faq_fr.html#3.5

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut
    Je te remercie grandement pour ton aide
    Cordialement
    Fabien

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut
    J' ai un autre petit probleme, qui vient sans doute du fait que mon code c++ ne soit pas managé, lorsque j'ajoute les directive suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #using <mscorlib.dll> 
    #using <ClassLibrary1.dll>
    l'erreur est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fatal error C1190: le code cible managé requiert '#using <mscorlib.dll>' et l'option '/clr'
    Je ne sais pas ce qu'est l'option /clr
    fabien

  7. #7
    Membre actif

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Par défaut Re
    Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

    Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d'informations, consultez Définition des propriétés de projets Visual C++.
    Cliquez sur le dossier Propriétés de configuration.
    Cliquez sur la page de propriétés Général.
    Modifiez la propriété Compilation comme code managé.
    Pour obtenir des informations sur la façon d'indiquer que vous voulez créer un module, consultez /NOASSEMBLY.
    après utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #pragma managed
    #pragma unmanaged
    Pour désactivé partiellement le management.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut
    j'y suis presque arrivé,
    compilation + edition de lien ok, mais a l'execution ca plante si je fais simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    	ClassLibrary1::Class1* pClass1;
    	pClass1 = new ClassLibrary1::Class1() ;
    par contre l'editeur reconnait tres bien la classe et lorsque je fait simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ClassLibrary1::Class1* pClass1;
    //   pClass1 = new ClassLibrary1::Class1() ;
    La ca marche .
    Le message d'erreur qu'il me donne est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ne exception non gérée du type 'System.IO.FileNotFoundException' s'est produite dans Module inconnu.
     
    Informations supplémentaires : Le fichier ou l'assembly nommé ClassLibrary1, ou l'une de ses dépendances, est introuvable.
    Je sens que j'y suis presque ....
    Je suis sur que tu vas pouvoir m'aider

  9. #9
    mat.M
    Invité(e)
    Par défaut
    La ca marche .
    Le message d'erreur qu'il me donne est :
    Comme l'a indiqué à juste titre Zebiloute , as-tu déclaré les pragma managed et unmanaged avant le bloc de code posant problème ??

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut
    oui je l'ai bien fait,
    le pire c que j'ai fait foonctioné l'exemple de zebiloute !
    Mais avec mon code et les #pragma en plus ca ne marche pas !
    Peut être le problème vient-il du fait que le projet est basé sur les MFC ??
    Cela m'embete franchement
    fabien

  11. #11
    Membre actif

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Par défaut Re
    Est-ce que tu as vérifié ce point : Par ce que généralement ce genre de message apparît quand le framework ne peut pas accéder à une dll.


    Important :
    Pour que ça ne plante pas, il faut imperativement que : La dll "ClassLibrary1.dll" soit :
    - dans le même répertoire que l'exécutable
    - Ou dans le repertoire FrameWork (ex:C:\WINNT\Microsoft.NET\Framework\v1.0.3705)
    - Ou dans le rep System32.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 34
    Par défaut
    Yeappeah , je sui vraiment un co*,
    j'avais bien mis la dll dans le repertoire de source,(compilation edition de lien ok), mais pas dans le répertoire de l'executable.
    C bon ca marche tres bien.
    Je te remercie bcp zebiloute ainsi que tout les autres qui m'ont aider.
    Tu m'aides a sauver la face devant mes boss
    fabien

    PS : Peut-etre faudrait-t-il mettre ce sujet dans la FAQ pour permettre a d'autre utilisateur d'en profiter.

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

Discussions similaires

  1. Intéropérabilité C et C#
    Par oxa dans le forum C++/CLI
    Réponses: 4
    Dernier message: 18/12/2006, 13h50
  2. Intéropérabilité entre un client java et serveur dot net
    Par miss_2000 dans le forum Services Web
    Réponses: 1
    Dernier message: 01/12/2006, 10h54

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