Page 1 sur 1

Echange de donnée entre Pure et C++

Publié : sam. 04/mars/2006 7:58
par olivier
Salut à tous

Voilà, je me lance dans une boite de dev en collaboration avec un pote.
Il programme en C et moi en pure, on a donc besoins de s'envoyer des données !
L'executable est en pure, et les DLL en C++
On arrive à s'envoyer une variable de type long, une variable de type string, un tableau de type long, un tableau de type string, une structure avec des long, une structure avec des tableau de long................ mais on n'arrive pas à envoyer une structure avec des variables String !

1°) Quelqu'un aurait il une idée pour envoyer une structure de variables de type String ?

2°) Le nom des procédures de sa DLL, change : test_dll() devient _test_dll@0(); cela est il normal, y a t-il un remède ?

3°) J'appelle les fonctions de la dll comme cela :

Code : Tout sélectionner

OpenLibrary(0, "database_dll.dll")
CallFunction(0, "_test_dll@0")
CloseLibrary(0)
Existe t-il un moyen pour les appeller plus simplement ?

4°) Est-il possible d'avoir une variable string comme retour ?


Merci d'avance pour vos réponse et bonne prog à tous !
Stef

Publié : sam. 04/mars/2006 13:11
par KarLKoX

Publié : sam. 04/mars/2006 13:11
par KarLKoX
*double post*

PS : le forum a de gros problèmes ... (je n'ai pas double posté)

Publié : sam. 04/mars/2006 13:28
par olivier
Merci Karlkox,

mais je ne voie pas de structure avec une variable de type string qui est envoyé à la DLL.

Faut-il que je mette mes lunettes ???? :?

Publié : sam. 04/mars/2006 14:50
par Flype
Existe t-il un moyen pour les appeller plus simplement ?
oui il y a plus simple.
si ton pote t'envoie 2 fichiers malib.dll et malib.lib, tu pourras utiliser libimporter (dans le dossier de purebasic). ainsi les fonctions seront reconnues directement dans l'éditeur comme les fonctions de l'api genre beep_().

ou alors avec pb4 tu utilises Import "malib.lib" / EndImport
ce qui est à mon avis l'idéal. çà ne dispense pas d'avoir la dll dans le dossier.
ca permet juste de les intégrer facilement.[/code]

Publié : sam. 04/mars/2006 14:52
par Flype
Est-il possible d'avoir une variable string comme retour ?
Structure MYSTRING
string1.l
string2.l
EndStructure

*mystruct.MYSTRUCT = myfunc()

et a tu essayé avec PeekS(*mystruct\string1) ?

les chaines renvoyées par votre dll sont-elles terminées par zéro, ce qui est obligatoire ? à moins de faire PeekS(*mystruct\string1,32) par ex.

Publié : sam. 04/mars/2006 19:52
par olivier
Salut Flype

Pour ce qui concerne d'importer d'importer la lib je vais essayer cela, ça m'a l'air tres interessant... :D

Pour le retour par une string, j'ai bien eu l'idée de diriger vers un pointeur, mais je voulais savoir si il y a moyen de retourner directement une String ?

Dans tous les cas merci beaucoup pour tes réponses.