[VB.net] Problème de types avec dll C++

cs_bamoo Messages postés 17 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 21 décembre 2004 - 20 déc. 2004 à 21:22
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007 - 22 déc. 2004 à 11:30
Bonjour,
J'espère que je poste au bon endroit car mon message concerne du VB et du C++ (c'est tout de même du code VB qui fait appel à une dll écrite en C++) :

J'ai une image au format A4R4G4B4, soit 16 bits par pixel.
Je veux la convertir en X1R5G5B5. Je voudrais faire des décalages et j'ai choisi la solution d'une dll en C++ car c'est très rapide.
Malheureusement, j'ai un petit problème avec les types...

Voici ma fonction en C++ :
Code:

__declspec(dllexport) int Scroll(int* dBuffer, int* srcBuffer,int nbLig, int nbCol)
{
memcpy(dBuffer,test,nbLig*nbCol);
return 0;

}

Voici maintenant mon code en VB .net :
Code:

Private Declare Function Scroll Lib "DLL_ttmt.dll" Alias "Scroll" (ByRef DestTableau As Int32, ByRef SrcTableau As Int32, ByVal nbLig As Int32, ByVal nbCol As Int32) As Int32

L'appel en VB .net :
Code:

Dim buffer(160 * 120 * 2) As Byte
...
Dim tab As Array
Dim ranks As Integer() = {110, 110}
tab = tex.LockRectangle(GetType(Byte), 0, LockFlags.None, ranks)

Scroll(tab(0, 0), buffer(0), 109, 109)
...

Je pense que ca vient des types que je passe. Je ne donne surement pas ce qu'il faudrait donner.
Quelqu'un peut il m'aider car je débute en vb ?

Merci

5 réponses

AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
21 déc. 2004 à 10:34
Salut,

Je maîtrise pas particulièrement ce sujet, mais peut-être cette erreur viendrait de la dll, dans la procédure, tu utilises une variable nommée test, et tu n'utilises pas srcBuffer, cela ne joue-t-il pas ?

Tchô ;)
AnteManoclis
0
cs_bamoo Messages postés 17 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 21 décembre 2004
21 déc. 2004 à 12:14
Non, je me suis trompé en recopiant, j'ai bien srcBuffer en fait et la dll compile niekl....
Ca vient d'autres part, j'aurais du faire plus attention à ce détail...désolé :-)
0
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
21 déc. 2004 à 13:16
Je n'utilise pas Vb.net, et je ne connais pas le type Int32 (bien que je comprenne que cela se traduise par un entier de 32-bits (vraiment trop balaise...)) cependant, je je traduis le int du C++ en Long en VB, peut-être cela va-t-il changer quelque chose... Autrement, le "Alias "Scroll"" est en théorie, inutile étant donné que la fonciton porte le même nom, je pense pas que ça change quoique ce soit, mais têtre, sait-on jamais... Une petite question aussi, as-tu vérifié que les variables nbLig et nbCol étaient bien reçues par la DLL ?

Tchô ;)
AnteManoclis
0
cs_bamoo Messages postés 17 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 21 décembre 2004
21 déc. 2004 à 22:56
En fait, pour l'instant, je n'arrive pas à debugger la dll...
mais de toute facon, ca ne veint pas non plus de ca. J'ai mis la bonne valeur dans l'appel de la fonction memcpy en C++ et ca n'a pas marché non plus. Apparement je ne passe pas les bonnes adresses de mes tableaux ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
22 déc. 2004 à 11:30
As-tu essayer en mettant des & à la place des * (c'est ton idée de passage d'adresse qui m'inspire ça) ? Sinon je ne connais pas le type Array, celui-ci n'existant pas en Vb6. Mais la DLL attend un entier à la place d'un Array, peut-être est-ce un problème. Une dernière possibilité, tab possède deux arguments, est-ce compatible avec la DLL ?

Tchô ;)
AnteManoclis
0
Rejoignez-nous