# Environnements de dveloppement > Autres EDI > Powerbuilder >  [PB 9] Implmentation d'une DLL externe

## CVince

Bonjour  tous,

J'ai beaucoup de problmes pour implmenter une dll via PB9. Il semblerait que ce soit un problme de typage, mais je ne parviens pas  le rsoudre.

Voici la dclaration du point d'entre de la dll :


```

```

Voici un exemple sous vb.net qui fonctionne :


```

```

Le mme sous PB9 qui ne fonctionne pas :

En Global External Functions


```

```

Sur un event d'un bouton


```

```

J'obtiens l'erreur suivante : *"Error : Specified argument type differ from required type at runtime in DLL finction mafonction. (invalid stack pointer on return from function call) at line 64 in ue_calldll of object w_main."*

Je n'ai pas la moindre ide du problme  ::?: 

_Edit 1 : Ajout du code erreur.
Edit 2 : Ajout du point d'entre de la dll._

----------


## shahin

AMHA il manque WINAPI (stdcall) dans ton code C.

Exemple : 

```

```

Ta dll fonctionne peut-tre avec VB.net, mais pas avec VB6.
Lire l'article Appel de fonctions de la DLL  partir d'applications Visual Basic

----------


## CVince

> AMHA il manque WINAPI (stdcall) dans ton code C.
> 
> Exemple : 
> 
> ```
> 
> ```


Yep, ce fut galement ma conclusion...  ::(:  
Malheureusement, je n'ai pas la main sur cette dll.

La solution utilise est la cration d'un "wrapper/bridge".
J'ai crer un objet com en vb.net qui appel cette dll. J'instancie l'objet com dans PB et je lui passe tout les arguments ncssaires. L'objet com transfre les lments mis en forme  la dll et rcupre le rsultat.
C'est lourd, mais j'ai pas trouv mieux.

Pour infos, j'ai fait plusieurs tests avec un ami spcialiste de delphi.
Nous nous sommes rendu compte que les tableaux sous pb lorsqu'ils sont transmis  une dll externe ne sont pas dlimits !
En gros, admettons que je passe  une dll un tableau de type int[5] initialis avec des valeurs de 0  4 par exemple, et bien du ct de la dll, on rcupre bien tab[0]=0, ... tab[4]=4, mais le problme, c'est que ca continue (tab[5]=0... tab[10000]=0...) jusqu'a explosion mmoire avec "memory could not be read" habituel !  :8O:  

Vive les tableaux sous PB !

----------


## CVince

> Ta dll fonctionne peut-tre avec VB.net, mais pas avec VB6.
> Lire l'article Appel de fonctions de la DLL  partir d'applications Visual Basic


C'est tout  fait a !!!  ::cry::

----------

