Passer un tableau purebasic à une DLL écrite en C

Programmation d'applications complexes
Kalyptus
Messages : 3
Inscription : dim. 27/janv./2008 3:25

Passer un tableau purebasic à une DLL écrite en C

Message par Kalyptus »

Yop tout le monde,
Je développe des bots sensés tourner sur un système de tchat en 3D appelé ActiveWorlds, et la SDK fournie est, à la base, faite pour être utilisée en langage C. Mais un habitué d'ActiveWorlds, administrateur de plusieurs univers, à créé un wrapper pour utiliser cette SDK avec PureBasic, il a donc adapté toutes les fonctions C vers des fonctions PB, dans un fichier .pb à inclure pour chaque développement de bot.
BREF tout va bien, sauf que je me suis retrouvé avec une fonction qui ne fonctionne pas après traduction, en C elle donne :

Code : Tout sélectionner

aw_query (int x, int y , int tableau [3] [3]);
Et demande donc en paramètres deux entiers (aucun problème), puis un tableau en 2 dimensions de 3 colonnes et 3 rangées, contenant des infos recoltées, au cours de l'exécution de la fonction, dans le monde en 3D. Enfin les détails importent peu, le fait est qu'il est impossible, pour PB, de récuperrer le tableau comme ça :

Code : Tout sélectionner

aw_query(0,0,sequence)
0 et 0 étant les entiers, sequence étant un Dim déclaré et rempli de 0 comme ceci :

Code : Tout sélectionner

Global Dim sequence.l(3,3)

For i = 0 To 2
  For j = 0 To 2
    sequence(i,j) = 0
  Next
Next
Ca ne marche pas, car il faut transmettre un entier :/

Bref, avez vous une idée de comment résoudre ce problème ?

Merci d'avance, a+
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

essaye en donnant l'adresse de ton tableau ? Sequence()
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Anonyme

Message par Anonyme »

en c , je ferais comme cela :

Code : Tout sélectionner

void PasseTab( int *Tab){
/*code*/

*Tab + x*sizeof(int) + TailleTabX * y*sizeof(int) = se que tu veut.

x & y , position dans le tableau.


} 

Un pointeur est toujours en int * , peut importe se qui passe , du moment que le traitement dans la fonction est bonne.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Tient Active World ça existe toujours ? Dire que c'est là que j'ai rencontré ma femme il y a déjà 7 ans... La communauté francophone était super sympa au début puis ça commencé a dégénérer... ça fait une eternité que j'y ai pas mis les pieds :P
Kalyptus
Messages : 3
Inscription : dim. 27/janv./2008 3:25

Message par Kalyptus »

Eh oui on existe toujours^^ Enfin on est une communauté un peu "en marge" de AW, on est plus ou moins indépendants d'eux...
D'ailleurs, si j'ose un coup de pub : http://3d.levillage.org, vous y verez plusieurs bots en PureBasic^^
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

et les gens paye pour ça ? 8O
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Dobro a écrit :et les gens paye pour ça ? 8O


:lol:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Dobro a écrit :et les gens paye pour ça ? 8O
j'en sais rien de mon temps c'était gratuit.. et c'était surtout amusant...du même genre que 3D constructions kits (si tu connais)
Kalyptus
Messages : 3
Inscription : dim. 27/janv./2008 3:25

Message par Kalyptus »

Rien n'empêche de ne pas payer, ça s'appelle un "touriste"... Et on y va pour l'ambiance, pas pour la technologie de pointe...
Répondre