Bonjour à tous.

Je m’essaie depuis quelques temps à la programmation .NET en utilisant C# et je me heurte actuellement à un problème.

J’utilise un logiciel (très probablement écrit en C++) qui effectue un traitement de données sur mon PC. Ce soft me laisse la possibilité de lui fournir une DLL afin d’effectuer des tâches supplémentaires (que j’aurais écris dans la DLL) à la fin de son traitement.

Ce soft s’attend à trouver systématiquement dans la DLL que je lui fournis des noms de fonctions précises.

En voici un échantillon type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
void FinTraitement( /*I*/ char NomTache[], /*I*/ double Duree, /*O*/ short *Init, /*O*/ char Message[]);
/*I*/ signifiant paramètre d’entrée et /*O*/ paramètre de sortie.

Alors voilà je ne connais pas du tout le C++, DLL et interop COM me sont un peu étrangers. Après mes diverses recherches j’ai réussi à cerner un peu mieux les DLL et maintenant je suis confronté au managé/non managé.

D’une part là ou le soft s’attend à des fonctions dans ma DLL, en C# on parle de classes, propriétés et méthodes.

Ensuite j’ai pu lire çà et là qu’il faudrait écrire ma DLL bibliothèque de classe C# en utilisant des interfaces puis de générer une type library (.tlb) pour indiquer au programme appelant ma DLL un point entrant (et diverses autres informations j’imagine).
Et là çà coince, dans les exemples que j’ai vu le programme appelant doit faire un #IMPORT du fichier .tlb en question.
Hors je n’ai aucun moyen de modifier le code du logiciel que j’utilise (et ce n’est pas le but d’ailleurs).

Est il possible d’écrire une DLL en managé et de la rendre compatible par un moyen ou par un autre à un soft écrit en C++ sans avoir besoin de modifier ce soft ?

Merci beaucoup.