les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006
-
11 juil. 2005 à 02:07
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006
-
18 juil. 2005 à 00:21
Bonjour, je vais essayer d'etre claire.
J'ai un programme en VB6 (qui marche normalement) qui a un tableau de double :
"Dim picture_array(0 To 310, 0 To 400) As Double"
Mon tableau doit etre utilise par une Dll en C++ par une fonction
"extern "C" _declspec(dllexport) double** CALLBACK RAThresh (double **InImg, int x, int y){ ... }"
Je l'ai bien declarer dans mon programme VB
"Public Declare Function RAThresh Lib "RAThresh.dll" (ByRef Infile() As Double, ByVal x As Integer, ByVal y As Integer) As Double"
mais j'ai toujours un message d'erreur a l'execution
"Can't assign to array"
...
J'espere avoir ete asser clair ... merci par avance de toutes reponses.
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 12 juil. 2005 à 00:02
Merci Daniel,
je galere encore mais ton aide me sert.
toujours les meme probleme, le tableau une fois passe dans la dll se retrouve vide et je comprend pas pourquoi.
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 13 juil. 2005 à 18:28
Grace a ton Varptr, j'arrive bien a passe des tableau .. a une dimention de ceux que je veux comme type (merci car avant je ne savait meme pas) mais pour les 2 domentions (double **), je galere toujours.
je m'explique :
quand je passe un tableau en 2 dim, je peux en cpp recuperer la premiere valeur car en parametre de la fonction cpp je declare '*' donc acces avec Infile[0] mais quand je veux d'autre valeur (ex : Infile[0][1], ...) impossible , le conpilateur me precise que j'ai qu'un pointeur 1D!!!! et si je passe '**', le compilateur accepte de generer ma dll mais quand je l'execute avec VB, gros message mechant de Windows qui me dit que je tape dans la memoire ou j'ai pas a mettre mes pieds !!!!
help me more please .... et merci pour tes precedentes reponses qui m'ont permi d'avancer !!!!!
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 14 juil. 2005 à 17:43
j'ai trouve (et enfin reussi) a passer mes tableau 2D de double de mon interface VB6 a ma DLL C++.
On passe le pointeur en "Long" (dans le declaration VB de la fonction DLL) et apres c du C++ normal :
*tableau; // pour la valeur
tableau++; // pour l'incrementation
en fesant gaffe de pas depasse les bords !!!! (mais c pas trop dur si on passe la taille en parametre ("Long" aussi meme si une fois en C++, on les traite en "Int") )
Bon, maintenant, je vais essayer de faire la meme chose a l'envers en passant par le "return" de la fonction C++ pour mon avoir mon nouveau tableau modifie ... si cela interesse quelqu'un une fois que j'aurai trouve je pourai toujours lui filler la source ...
mais la il me faut encore un peu de temps :)
Merci Gobillot pour ton aide qui m'a pernis d'avance...
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 14 juil. 2005 à 22:29
Bon, bin, javais dit dans mon precedent post que j'essaye maintenant d'utiliser le return de ma fonction C++, bin, je bloque depuis qq heures maintenant...
En fait je retourne bien un pointeur (je compare le "numero" en VB et en C++, c bien le meme), mais une fois que j'ai se chiffre, comment dire que c le debut d'un tableau (case [0,0]) de mon programme VB6... Je sais meme pas si c'est realisable...
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 14 juil. 2005 à 23:15
Je te remerci car ton indication est exactement ce que je souhaite, le hic, il vient de moi, je sais pas utiliser CopyMemory.
J'ai toujour le message : Sub or Function not Defined.
Je te remerci encore si tu peut m'aider car cela me sortirait d'une grosse pannade.
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 18 juil. 2005 à 00:21
C bon, la fonction CopyMemory marche et fait ce que je veux ... de nouveau petits problemes arrivent mais cela viens plus de mes algos qu'autre chose je pense. Je te remerci encore pour toutes tes aides.