utilisation de blibotheque C++ en C# - C#/.NET managed - Programmation
Marsh Posté le 07-06-2004 à 12:11:40
ReplyMarsh Posté le 07-06-2004 à 12:18:24
| HelloWorld a écrit : Ecrire un wrapper en Managed C++.  | 
 
 
Ca y est, le mot est laché !!!  
 
le soucis est que je ne suis pas a l'aise en C++ (euphemisme pour dire que je suis une bille) et que je n'ai pas envie de me lancer dans ce genre de dev car: 
- je n'aime pas le C++ 
- ca va me prendre un temps monstre avec tous les pbs que je vais rencontrer. 
 
en fait, j'aurais surtout voulu savoir si un outil permettant de creer ce wrapper n'existait pas deja. 
A ma connaissance, il existe ce genre d'outil qui permet de passer d'une DLL a du code managé ! 
 
auriez vous une idee ? 
 
merci d'avance 
 
v.
Marsh Posté le 07-06-2004 à 13:58:05
| vonm a écrit :   | 
 
Lequel ? 
Le probleme n'est pas la dll, mais les fichiers de déclaration, structures de données, etc... écrits en C++. 
Dotnet ne fonctionne pas pareil : pas d'héritage multiple, gestion auto de la mémoire, pas de STL & templates, ... 
Non, faut faire un wrapper. 
Une solution est peut être SWIG, qui supporte le C#. Mais je l'ai jamais testé avec .Net, et il doit y avoir des limites quand même (généricité, héritage multiple, ...) 
http://www.swig.org/
Marsh Posté le 07-06-2004 à 14:07:13
| Citation : Lequel ? | 
 
 
aucune idee, un collegue vient de me dire que ca existait et de regarder dans la doc de visual studio mais je n'ai pas cherche. 
 
| Citation : Le probleme n'est pas la dll, mais les fichiers de déclaration, structures de données, etc... écrits en C++.  | 
 
 
je suis bien d'accord. 
mais a mon avis, etant donne que le code en question est tres simple (n'utilise aucune fonctionnalite propre a une plateforme et que du c++ standard) je pensais qu'un outil de portage aurait pu faire ca. 
en meme temps, tu vas me repondre que s'il est si simple, ca sera facile de faire un wrapper...  
 
 
| Citation : Une solution est peut être SWIG, qui supporte le C#. Mais je l'ai jamais testé avec .Net, et il doit y avoir des limites quand même (généricité, héritage multiple, ...)  | 
 
 
j'ai regarde rapidement, mais c'est ultra simpliste. 
bon, allez je vais me lancer. 
sais-tu ou je peux trouver de la doc accessible sur ces wrappers ??? 
 
merci d'avance 
 
v.
Marsh Posté le 07-06-2004 à 14:10:50
bref tu connais ni C# ni C++ ... et toujours pas google ni même le clic_sur_lien_pour_aller_sur_un_site_web
Marsh Posté le 07-06-2004 à 14:20:43
| Taz a écrit : bref tu connais ni C# ni C++ ... et toujours pas google ni même le clic_sur_lien_pour_aller_sur_un_site_web  | 
 
 
si,  
je pense etre capable de me demerder correctement en C# et connaitre suffisamment de choses en C++ pour etre capable de dire que j'aime pas ca ! 
 
effectivement, j'aurais pu me debrouiller avec google pour trouver de la doc sur les wrappers. 
 
mais la, la question etait posee a la personne qui me repond depuis le debut (HelloWorld en l'occurrence) et en aucun cas a toi. 
 
je te remercie donc de ta precieuse participation a ce fil de discussion mais je te remercie aussi d'eviter de m'aider par la suite. 
 
a bon entendeur... 
 
v. 
Marsh Posté le 07-06-2004 à 14:45:44
| Citation : aucune idee, un collegue vient de me dire que ca existait et de regarder dans la doc de visual studio mais je n'ai pas cherche. | 
 
Il doit faire référence à DllImport. C'est bien pour utiliser 2 ou 3 fonctions en C, c'est pas fait pour utiliser des classes C++. 
 
| Citation : je suis bien d'accord.  | 
 
Justement, y'a rien du C++ standard dans .Net. MC++ utilise System::String, C++ utilise std::string, et c'est pareil pour tout le reste. C'est loin d'être si simple... 
 
| Citation : sais-tu ou je peux trouver de la doc accessible sur ces wrappers ??? | 
 
Cherche de la doc sur MC++, sur le Marshaling. 
http://www.developer.com/net/cplus/article.php/3096281 
Marsh Posté le 07-06-2004 à 14:55:25
merci beaucoup pour ton aide, 
 
je m'y attelle de ce pas. 
 
a+ 
 
v.
Marsh Posté le 07-06-2004 à 11:40:08
Bonjour,
je dispose d'une bibliotheque C++ (Ann :
http://www.cs.umd.edu/~mount/ANN/) que je souhaiterais utiliser en C#.
je ne sais pas quelle peut etre la meilleure solution pour faire cela.
aureiz vous une idee sur les differentes methodes qui s'offrent a moi ?
merci d'avance
v.