Création d'une DLL c pour Windev

Fermé
DarkCyprius Messages postés 2 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 20 avril 2010 - 20 avril 2010 à 16:47
Voila je désire utiliser des fonctions et structures écrites en langage C dans Windev, j'ai donc créer une DLL en langage C dans laquelle je défini deux structures et deux fonctions complexes et quelques fonctions basiques de test.
Je compile cette DLL avec Dev c++,sa compile bien(j'ai creer un projet DLL avec Dev c++) ; je fais ensuite appel aux fonctions de la DLL avec la fonction API dans le Wlangage.Seule une fonction basique d'addition qui retourne un entier et une autre qui affiche une MessageBox fonctionnent , toutes les autres ne fonctionnent pas et affiche une erreur 2802.
Il y a donc surement une erreur de type avec les fonctions qui retourne un char, char * ou encore une structure ou pointeur de structure.Malgre beaucoup de documentation sur internet et sur l'aide PCSoft je n'arrive guère a solutionner mon problème.
Je vais vous afficher les declarations de fonctions de mon .h de ma DLL et mon code de Wlangage.Dites moi si vous voulez d'autre information car moi je suis vraiment bloquer.

DANS LE .H:

typedef struct lixiviat
{ //declaration des variables
}LIXIVIAT,*pLIXIVIAT;

typedef struct traite
{ //declaration des variables
}TRAITE,*pTRAITE;

DLLIMPORT int _stdcall HelloNumber (int a,int b);


DLLIMPORT char* _stdcall HelloYou (void);


DLLIMPORT char _stdcall HelloToi (void);


DLLIMPORT void _stdcall HelloWorld (void);


DLLIMPORT pLIXIVIAT _stdcall extraction(char* lefichiertexte);


DLLIMPORT TRAITE _stdcall traitement(pLIXIVIAT tablo);



DANS WINDEV:

RetourFonction est un entier // Type C :int
c est un entier // Type C :int
b est un entier // Type C :int
nRetourFonction2 est un entier
sLemot est une chaîne
cRetourFonction5 est un caractère
RetourFonction3 est un tableau de 9400 LIXIVIAT
RetourFonction4 est un TRAITE


c=4;
b=7;
ListeSupprimeTout(LISTE_FichierPasTraite)

RetourFonction=API("C:\Documents and Settings\nicju\Bureau\devcpp\ProjetDLL.dll","HelloNumber",c,b)
ListeAjoute(LISTE_FichierPasTraite,RetourFonction)

cRetourFonction5=API("C:\Documents and Settings\nicju\Bureau\MaDLL\ProjetDD.dll","HelloToi")
ListeAjoute(LISTE_FichierPasTraite,cRetourFonction5)

nRetourFonction2=API("C:\Documents and Settings\nicju\Bureau\MaDLL\ProjetDD.dll","HelloYou")
sLemot=ChaîneRécupère(nRetourFonction2,crAdresseASCIIZ)
ListeAjoute(LISTE_FichierPasTraite,sLemot)

API("C:\Documents and Settings\nicju\Bureau\devcpp\ProjetDLL.dll","HelloWorld")


RetourFonction3=API("C:\Documents and Settings\nicju\Bureau\devcpp\ProjetDLL.dll","extraction","C:\Documents and Settings\nicju\Bureau\Lhotellier\Enr_Debi.218")

RetourFonction4=API("C:\Documents and Settings\nicju\Bureau\devcpp\ProjetDLL.dll","traitement",RetourFonction3)

A voir également: