le 02-24-2016 02:34 AM
Bonjour,
J'ai développé une dll sous cvi. Plusieurs fonctions de cette dll sont accessibles (par ex :
int DLLEXPORT STDCALL FNET_ReadParameters(int count, unsigned char id[MAX_REFERENCE_DATAOBJECT], char dataRead[], unsigned char dataFormatted, double iTimeOut).
Mon client développe sous C# et veut utiliser cette DLL, mais pour cela elle doit être compatible .NET et à priori ce n'est pas le cas.
Comment puis je faire sans avoir à tout redevelopper, car il faut savoir que cette dll est également utilisée dans un autre projet CVI ainsi que dans un projet sous TestStand ? (D'ailleurs je ne veux pas avoir à tout réécrire car je ne connais pas du tout .NET)
Merci pour votre support
Cordialement
Vincent
Résolu ! Accéder à la solution.
le 02-25-2016 03:06 AM
Bonjour,
Pour passer du monde non-géré (C) au monde géré (C#, VB.NET...), il faut créer un wrapper. Il s'agit d'une assembly .NET qui servira de "passerelle" entre le code de la DLL et le code appelant en C#. Pour ça on utilise souvent P/Invoke.
Cordialement,
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
le 02-25-2016 03:18 AM
Bonjour
Merci pour votre retour.
Cela signifie qu'avec CVI (ou en C plus généralement) on ne peut pas faire d'application utilisable en .NET, du moins nativement. (il faut passer par un wrapper)
Donc cela se passe plutôt du coté utilisateur de la DLL ici en l'occurence le développeur C#, qui doit écrire un wrapper specifique pour cette DLL.
C'est bien cela ?
Cordialement
Vincent
le 02-26-2016 07:02 AM
Le probleme est resolu.
il faut effectivment creer un wrapper dans C#. Celui ci redefini le prototype de la fonction en adaptant les types au format C#
ci joint un lien qui explique comment faire :
http://www.codeproject.com/Articles/9826/How-to-create-a-DLL-library-in-C-and-then-use-it-w
merci