
Import lib ou OpenLibrary
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Import lib ou OpenLibrary
Merci CHAOS de tes eclaircissements 

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Import lib ou OpenLibrary
Bon j'ai eu confirmation par SROD que les procedure n'etaient chargées que lorsque elles sont appellées.
C'est le compilo qui voit, mais en general c'est comme ça
Pour le retour string, il m'a donné la soluce aussi.
Ma methode n'est pas la bonne, car risquée
Alors j'en profite pour la ramener ici ...on sait jamais si ça peut servir a "quinquin"
Dll :
Client :
Vala vala 
C'est le compilo qui voit, mais en general c'est comme ça
Pour le retour string, il m'a donné la soluce aussi.
Ma methode n'est pas la bonne, car risquée
Alors j'en profite pour la ramener ici ...on sait jamais si ça peut servir a "quinquin"

Dll :
Code : Tout sélectionner
#ExampleStringToReturn$ = "Kwai you idiot!"
ProcedureDLL.i GetString(*buffer)
If *buffer
PokeS(*buffer, #ExampleStringToReturn$)
EndIf
ProcedureReturn Len(#ExampleStringToReturn$)
EndProcedure
Code : Tout sélectionner
Import "GetString.lib"
GetString(a.i=0) As "_GetString@4"
EndImport
;Get the required buffers size.
numCharacters = GetString()
;Retrieve the string.
a$ = Space(numCharacters)
GetString(@a$)
Debug a$

Re: Import lib ou OpenLibrary
Les strings sont propres à PureBasic, alors qu'une DLL est faite pour etre utilisée par n'importe quel langage. Donc le PeekS() est nécessaire.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Import lib ou OpenLibrary
Oula oulala !!!!Fred a écrit :Les strings sont propres à PureBasic, alors qu'une DLL est faite pour etre utilisée par n'importe quel langage. Donc le PeekS() est nécessaire.
Que veut tu dire par la ????

Tu veux dire que mon premier code est bon ????
Car SROD m'a dit qu'il etait dangereux

Code : Tout sélectionner
Import "Dll.lib"
MaFonctionDansLaDll(a.s)
EndImport
Procedure.s MaFonctionDansExe(Phrase.s)
ProcedureReturn PeekS(MaFonctionDansLaDll(Phrase))
EndProcedure
Debug MaFonctionDansExe("Bonjour Kcc")

Alors si PEEKS y'a bon pour toi ....y'a bon pour moi aussi

Re: Import lib ou OpenLibrary
En principe c'est bon. Ca merite un test quand meme 

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Re: Import lib ou OpenLibrary
Par test,je pense que Frederic pense à ca :
Code : Tout sélectionner
Import "Dll.lib"
MaFonctionDansLaDll(a.s)
EndImport
Procedure.s MaFonctionDansExe(Phrase.s)
*Mem = MaFonctionDansLaDll(Phrase)
If *Mem
ProcedureReturn PeekS(*Mem)
else
ProcedureReturn ""
endif
EndProcedure
Debug MaFonctionDansExe("Bonjour Kcc")
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Import lib ou OpenLibrary
Alors la FRED.....je sais que tu le sais deja...mais...
JE T'AIME !!!
T'inquiete pas le test, ça fait un paillon que je le fait
J'ai tout fait comme ça
Dans la DLL
Dans l'EXE
Alors quand mon MAITRE y m'a dit que j'avais tout faux :
Yes providing the dll returns a global or static string. This is not a threadsafe way of doing it though. Use buffers to be absolutely safe.
http://www.purebasic.fr/english/viewtop ... 62#p304862
Il m'a fait une chose que je suis jamais arrivé a faire .......perdre 10 Kilos
J'me suiis dit :
"Aille aille aille" et moi qui est tout codé comme ça
Bah moi je voyais pas ou c'etait dangereux, seulement si evidement la DLL repond, autrement c'est comme a canne ....le tapis rouge
Mais autrement ça marchait nickel
KCC il en a marre...
Il demande toujours avant, avec un petit exemple simple
Quand il a une reponse, il fait comme on lui a dit, mais il repercute ça sur des centaines de fonctions
Donc, il code des milliers de lignes et quand il a fini, un autre passe par la et lui dit que c'est pas comme ça qu'il faut faire, que c'est la mort de la memoire
Et KCC il veut pas faire souffrir les ordinateurs....il trouve que y'a bien assez de gens et d'animaux qui souffrent comme ça
D'ailleurs j'ai passé un mois sur juste un sujet
Comment passer un tableau de strings d'un EXE a une DLL
Un mois a faire des dizaines de codes et a me faire remonter les bretelles par SROD et me faire aider du forum français.
Car mois je passais un tableau comme une variable, et quand je liberais la copie du tableau dans l'exe, et ben je liberais les pointeurs de la DLL
Et ben a l'origine, c'etait "quinquin" du forum US qui m'avait dit de faire comme ça...
Et apres j'ai eu des dizaines de fonctions a corriger dans ma DLL
A force ma DLL elle est pleine de pansements
Mais bon, je lui en veux pas....il est tellement gentil avec moi, comme les gens de ce forum car il faut se le taper le KCC
Donc comme dirait muriel robin..... "j'imprime" ta reponse qui m'arrange au plus haut point.
Et on dit rien a SROD....c'est notre secret
Non je te dis ça ..parce que comme je sais que tu est bavard......
Merci milles fois FRED
PS: Au fait....ça a aucun rapport....mais ma femme a le meme prenom que toi
Ca fait que j'ai deux FRED dans ma vie
JE T'AIME !!!

T'inquiete pas le test, ça fait un paillon que je le fait

J'ai tout fait comme ça

Dans la DLL
Code : Tout sélectionner
ProcedureDLL KccYProgramme()
Static a$
..
..
ProcedureReturn @a$
EndProcedure
Code : Tout sélectionner
Debug PEEKS(CallFunction(0, "KccYProgramme"))
Yes providing the dll returns a global or static string. This is not a threadsafe way of doing it though. Use buffers to be absolutely safe.
http://www.purebasic.fr/english/viewtop ... 62#p304862
Il m'a fait une chose que je suis jamais arrivé a faire .......perdre 10 Kilos

J'me suiis dit :
"Aille aille aille" et moi qui est tout codé comme ça

Bah moi je voyais pas ou c'etait dangereux, seulement si evidement la DLL repond, autrement c'est comme a canne ....le tapis rouge

Mais autrement ça marchait nickel

KCC il en a marre...
Il demande toujours avant, avec un petit exemple simple
Quand il a une reponse, il fait comme on lui a dit, mais il repercute ça sur des centaines de fonctions
Donc, il code des milliers de lignes et quand il a fini, un autre passe par la et lui dit que c'est pas comme ça qu'il faut faire, que c'est la mort de la memoire

Et KCC il veut pas faire souffrir les ordinateurs....il trouve que y'a bien assez de gens et d'animaux qui souffrent comme ça

D'ailleurs j'ai passé un mois sur juste un sujet
Comment passer un tableau de strings d'un EXE a une DLL
Un mois a faire des dizaines de codes et a me faire remonter les bretelles par SROD et me faire aider du forum français.
Car mois je passais un tableau comme une variable, et quand je liberais la copie du tableau dans l'exe, et ben je liberais les pointeurs de la DLL

Et ben a l'origine, c'etait "quinquin" du forum US qui m'avait dit de faire comme ça...
Et apres j'ai eu des dizaines de fonctions a corriger dans ma DLL
A force ma DLL elle est pleine de pansements

Mais bon, je lui en veux pas....il est tellement gentil avec moi, comme les gens de ce forum car il faut se le taper le KCC

Donc comme dirait muriel robin..... "j'imprime" ta reponse qui m'arrange au plus haut point.
Et on dit rien a SROD....c'est notre secret

Non je te dis ça ..parce que comme je sais que tu est bavard......

Merci milles fois FRED
PS: Au fait....ça a aucun rapport....mais ma femme a le meme prenom que toi

Ca fait que j'ai deux FRED dans ma vie

Dernière modification par Kwai chang caine le mer. 04/nov./2009 14:13, modifié 2 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Import lib ou OpenLibrary
Oui oui PROGI tu as raisonProgi1984 a écrit :Par test,je pense que Frederic pense à ca :Code : Tout sélectionner
Import "Dll.lib" MaFonctionDansLaDll(a.s) EndImport Procedure.s MaFonctionDansExe(Phrase.s) *Mem = MaFonctionDansLaDll(Phrase) If *Mem ProcedureReturn PeekS(*Mem) else ProcedureReturn "" endif EndProcedure Debug MaFonctionDansExe("Bonjour Kcc")
D'ailleur GNOZAL il arrette pas de tirer les oreilles a tout le monde en disant qu'il faut verifier la reponse de la DLL avant de faire PEEKS, car comme je l'ai dit au dessus...c'est le tapis rouge

Merci beaucoup de ton intervention PROGI

Dernière modification par Kwai chang caine le mer. 04/nov./2009 14:12, modifié 1 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Import lib ou OpenLibrary
Putain j'suis une burne 
Je viens juste de comprendre ce que FRED et PROGI veulent me dire
Ooohhh l'esquinté du godiwok !!!!
Deux MAITRES qui me disent la meme phrase et KCC il a pas compris....
Ayai !!!! faire le test......je viens de comprendre
Ca veux dire tester le retour de la DLL
Pas tester si PEEKS ça marche
Hihihi je me disait aussi....c'est dingue que FRED y me dise a moi de tester son PEEKS à lui hihihi !!!
Peut etre parce que si KCC y teste...et ben le monde entier il aura jamais de probleme
J'ai cru un instant que KCC, il allait prendre du galon, et etre le BETA testeur de la team
Bon cette fois ......apres deux heures d'explication .....j'ai compris
Faut faire le test
Et le plus drole dans tout ça.....c'est que je vous jure que je le fait pas expres
Hihihihi...faire le test...elle est bien bonne celle la ...

Je viens juste de comprendre ce que FRED et PROGI veulent me dire
Ooohhh l'esquinté du godiwok !!!!
Deux MAITRES qui me disent la meme phrase et KCC il a pas compris....
Ayai !!!! faire le test......je viens de comprendre
Ca veux dire tester le retour de la DLL
Pas tester si PEEKS ça marche



Hihihi je me disait aussi....c'est dingue que FRED y me dise a moi de tester son PEEKS à lui hihihi !!!
Peut etre parce que si KCC y teste...et ben le monde entier il aura jamais de probleme

J'ai cru un instant que KCC, il allait prendre du galon, et etre le BETA testeur de la team

Bon cette fois ......apres deux heures d'explication .....j'ai compris
Faut faire le test

Et le plus drole dans tout ça.....c'est que je vous jure que je le fait pas expres

Hihihihi...faire le test...elle est bien bonne celle la ...
