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
 [RESOLU] --> intéropérabilité c++ c#
 [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
 Re
 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 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Un projet C++ : ClassTest
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part __gc
 
 
				
				
						
						
				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
 Re
 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
 
 
				
				
						
						
				Je te remercie grandement pour ton aide
Cordialement
Fabien
 
 
				
				
						
						
				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 :
l'erreur est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Je ne sais pas ce qu'est l'option /clr
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'
fabien
 Re
 Re
				
				
						
						
				après utilisesPour 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.
Pour désactivé partiellement le management.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
 
 
				
				
						
						
				j'y suis presque arrivé,
compilation + edition de lien ok, mais a l'execution ca plante si je fais simplement
par contre l'editeur reconnait tres bien la classe et lorsque je fait simplement
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
La ca marche .
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3ClassLibrary1::Class1* pClass1; // pClass1 = new ClassLibrary1::Class1() ;
Le message d'erreur qu'il me donne est :
Je sens que j'y suis presque ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Je suis sur que tu vas pouvoir m'aider

 
 
				
				
						
						
				Comme l'a indiqué à juste titre Zebiloute , as-tu déclaré les pragma managed et unmanaged avant le bloc de code posant problème ??La ca marche .
Le message d'erreur qu'il me donne est :
 
 
				
				
						
						
				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
 Re
 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.
 
 
				
				
						
						
				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.
Partager