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
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
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
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
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
1
2
3 #using <mscorlib.dll> #using <ClassLibrary1.dll>
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
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
1
2
3 #pragma managed #pragma unmanaged
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
1
2
3
4 ClassLibrary1::Class1* pClass1; pClass1 = new ClassLibrary1::Class1() ;
La ca marche .
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
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
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 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
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