Bon, je crois avoir trouvé une explication

Déjà, Getdescription ne renvoie aucune donnée, vu qu'il n'y a aucun type de retour défini dans sa déclaration. En fait si j'ai tout compris, cette fonction ne fait que modifier une variable déjà existante que Jedicut a créée juste avant l'appel de cette fonction. Et lors de l'appel, Jedicut n'envoie aucune information sur l'emplacement en mémoire (pointeur) de cette variable. Il n'envoie que le nom de la variable et sa longueur.
Pour les Dll faites avec delphi, aucun problème vu qu'elles "savent" retrouver l'adresse mémoire d'une variable, avec simplement le nom de celle-ci (c'est d'ailleurs un des gros avantage de Delphi si j'ai tout suivi). Le StrPLcopy copie donc bien la chaine de caractère là où il faut, c'est-à-dire dans la variable description qui a été envoyée en paramètre.
Mais, en l'absence d'un pointeur qui indique l'adresse mémoire où se trouve la variable, les dll écrites dans d'autres langages ne peuvent donc pas la retrouver , et encore moins la mettre à jour. On peut donc toujours attribuer une valeur à une variable description définie dans la dll (qui n'aura rien à voir avec celle qu'a envoyé jedicut), faire des strncpy divers et varié mais qui ne mettront pas à jour la bonne variable.
En fait , lors de l'appel de la fonction, Jedicut devrait envoyer en paramètre le pointeur vers le tableau qui contient son adresse mémoire, et non la variable elle même :
GetDescription(PChar(Description), SizeOf(Description));
..ou un truc du genre.
Et là effectivement, ce pointeur contenant l'adresse mémoire de la vairable description permettra (enfin devrait permettre) à une dll tierce de la retrouver et la mettre à jour convenablement.
C'est ça ou il faut que j'aille dormir :-D ?