PINVOKE OU COMMENT INVOQUER UNE DLL 'C' À PARTIR DE C# .NET

typhoonx Messages postés 22 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 5 mars 2008 - 3 mars 2004 à 13:43
audklie Messages postés 26 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 23 juin 2006 - 10 mai 2007 à 15:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11491-pinvoke-ou-comment-invoquer-une-dll-c-a-partir-de-c-net

audklie Messages postés 26 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 23 juin 2006
10 mai 2007 à 15:26
et ou copies tu la DLL coté client? dans \Windows ?
pour moi il ne trouve pas la dll .
et mes fonctions sont déclarées dans un bloc extern "C" {}
et non avec __declspec(dllexport)
3 ans après , une solution peut être? lol je tente tjrs... :)
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
4 mars 2004 à 10:17
bonjour,
le problème vient peut-être du code C ...
en voici un exemple : fichier Oper.C
#include <windows.h>
__declspec(dllexport) int Addition(int x, int y)
{return x+y;}
__declspec(dllexport) int Multiplication(int x, int y)
{return x*y;}

... ou du programme C# qui utilise la DLL produite :
en tête de fichier :
using System.Runtime.InteropServices;//pour PInvoke (DllImport)

dans la classe utilisatrice :
[DllImport("testPInvoke.dll", CharSet=CharSet.Auto)]
public static extern int Addition (int x, int y);
[DllImport("testPInvoke.dll", CharSet=CharSet.Auto)]
public static extern int Multiplication (int x, int y);

Une fonction utilisatrice bouton : un label RES et des TextBox X et Y
private void btnAddition_Click(object sender, System.EventArgs e)
{RES.Text = Addition(Convert.ToInt32(X.Text),Convert.ToInt32(Y.Text)).ToString();
}

Reste à bien copier la DLL à côté de l'exe client.
bon courage
typhoonx Messages postés 22 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 5 mars 2008
3 mars 2004 à 13:43
Bonjour, j'ai essyé d'adapter votre code mais je n'ai pas réussi...
Je débute en c# et j'ai crée une dll en c ayant une fonction de multiplication et une autre d'addition (pour faire un exemple simple...).
Je voudrais à présent ouvrir la dll sous c# et utiliser mes deux fonctions... A l'aide !!!


Merci d'avance
Rejoignez-nous