Hello,
Est-il possible, dans un code C#, d'utiliser une DLL codée en C++ ?
Hello,
Est-il possible, dans un code C#, d'utiliser une DLL codée en C++ ?
Tout à fait, tu peux utiliser pour cela des DllImport
salut
pour utiliser du code C++ dans une application C#, il y a plusieurs approches possibles
Il faut savoir qu'on ne peut pas directement en C# instancier une classe C++. C'est impossible sans faire quoi que ce soit.
Avec l'interop (dllimport), tu peux appeler des méthodes d'une DLL. Après, que la dll soit codée en C++, C, Delphi, autre, peut importe. Il faut juste que cette DLL expose des méthodes... ET donc, tu appelles des méthodes, et pas des objets.
La solution 2 est de faire un wrapper en C++/CLI. Cela te permet d'ouvrir ta DLL C++ au monde C# en faisant une classe qui va faire les conversions nécessaires entre les 2 mondes.
Si tu veux directement utiliser une classe C++ en C#, la seule solution que je vois est de créer un wrapper C++/CLI. C'est relativement simple et rapide mais pas "automatique"... donc, je t'invite à regarder des exemples de code de wrapper que l'on trouve un peu partout sur le net.
En espérant avoir répondu à ta question.
A l'exposé complet de theMonz31, on peut ajouter aussi l'exposition d'un objet COM par la DLL C++.
si ta classe est "assez" simple en terme de propriété et de nombre de méthode à wrapper, ca peut se faire en 1h à tout casser...
Faire un wrapper, dans beaucoup de cas c'est quand même "Ultra" simple (en dehors de la recherche de la bonne fonction pour convertir les types différents)...
Et après, quel plaisir de pouvoir utiliser son ancien code C++ dans le monde .Net.
Franchement, dans un cadre professionnel et personnel, ca en vaut le coup...
It really worth it. Believe me![]()
Oui, mais no. Je vous situe le contexte : j'aurais besoin de faire appel aux bibliothèques suivantes : http://www.sintef.no/Projectweb/Geom...its/Downloads/
Il ne s'agit donc pas de mes classes, mais d'une palanquée de classes, avec parfois des fonctions utilisant du Boost passé en paramètre.
Et j'ai déjà du mal à compiler ces bibliothèques à cause de ma méconnaissance de CMake (je avais déjà galéré avec Bjam, Buckminster, et SCons... un peu plus, un peu moins...).
On dirait que tu fais de la pub pour une technique de développement personnel. :-)
Oui, mais quand tu vas voir dans SISL, qui est en C, le suffixe est c (en minuscule). :-)
Apparemment, pour les auteur de cette bibliothèque, on a :
Par ailleurs, si tu arrives à compiler Newmat (demandé par une des libs) avec Visual 2010, ça m'intéresse...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C -> c C++ -> C
si tu veux faire des maths avec des librairies .Net, ils en existent qui sont directement en .Net.... et qui peut-etre peuvent couvrir tes besoins![]()
Je cherche une bibliothèque qui fait de la construction de surfaces B-Splines / NURBS à partir d'un nuage de points (plus ou moins fait de mon côté), et des calculs d'intersection entre des segments et des surfaces NURBS.
Si tu connais une bibliothèque .Net, je suis preneur...
désolé, je ne connais pas de librairie pour faire cela...
Mais peut-etre regarder du coté de IMSL.Net
Sinon, tu peux aussi tenter ton bonheur du coté de python for .Net et utiliser des librairies python qui feraient celà![]()
Partager