Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yannick S.
ill ne faut pas faire B bb = new B() ? et si du coté C# tu fais class plutot que struct ? et si tu vires le ref dans ref myB lors de l'appel de la fonction ?
"Vérane Chanson" a écrit dans le message de news: 418104b6$0$17370$
Bonjour,
Voici mon probleme: J'ai une dll C++ dans laquelle j'ai la structure et la fonction suivante:
struct B {
int aLength;
int* aTab;
};
TEST_VCH2_API int fnladll3(B* aB); //renvoie la somme des elements du tableau.
Je veux appeler cette fonction depuis C# et voici mon code :
int res3 = fnladll3(ref myB); //fait la somme des elements du tableau
MessageBox.Show(res3.ToString());
}
Le resultat res3 devrait valoir 25 mais il vaut une valeur tres grande qui n'a rien a voir.
Il doit y avoir un probleme dans la maniere dont je passe ma struct, mais je ne sais pas lequel.
(est-il possible de passer une struct qui a un champ tableau dedans ??)
Merci d'avance,
Verane.
ill ne faut pas faire B bb = new B() ?
et si du coté C# tu fais class plutot que struct ?
et si tu vires le ref dans ref myB lors de l'appel de la fonction ?
"Vérane Chanson" <verane.chanson@varianinc.com> a écrit dans le message de
news: 418104b6$0$17370$4d4ebb8e@news.nl.uu.net...
Bonjour,
Voici mon probleme:
J'ai une dll C++ dans laquelle j'ai la structure et la fonction suivante:
struct B {
int aLength;
int* aTab;
};
TEST_VCH2_API int fnladll3(B* aB); //renvoie la somme des elements du
tableau.
Je veux appeler cette fonction depuis C# et voici mon code :
ill ne faut pas faire B bb = new B() ? et si du coté C# tu fais class plutot que struct ? et si tu vires le ref dans ref myB lors de l'appel de la fonction ?
"Vérane Chanson" a écrit dans le message de news: 418104b6$0$17370$
Bonjour,
Voici mon probleme: J'ai une dll C++ dans laquelle j'ai la structure et la fonction suivante:
struct B {
int aLength;
int* aTab;
};
TEST_VCH2_API int fnladll3(B* aB); //renvoie la somme des elements du tableau.
Je veux appeler cette fonction depuis C# et voici mon code :
int res3 = fnladll3(ref myB); //fait la somme des elements du tableau
MessageBox.Show(res3.ToString());
}
Le resultat res3 devrait valoir 25 mais il vaut une valeur tres grande qui n'a rien a voir.
Il doit y avoir un probleme dans la maniere dont je passe ma struct, mais je ne sais pas lequel.
(est-il possible de passer une struct qui a un champ tableau dedans ??)
Merci d'avance,
Verane.
Mitsuru FURUTA [Ms]
Bonjour,
L'écriture me semble bizarre. Au premier abord, je pense que nous ne sommes pas sur de la taille mémoire de Int[] aTab. Dans le doute, il vaut mieux mettre IntPtr aTab dont on est sur qu'il correspond à un pointeur classique tel que le définit int* aTab et jouer des fonctions de Marshalling telles que:
int res3 = fnladll3(ref myB); //fait la somme des elements du tableau
MessageBox.Show(res3.ToString());
}
Le resultat res3 devrait valoir 25 mais il vaut une valeur tres grande qui n'a rien a voir.
Il doit y avoir un probleme dans la maniere dont je passe ma struct, mais
je
ne sais pas lequel.
(est-il possible de passer une struct qui a un champ tableau dedans ??)
Merci d'avance,
Verane.
Bonjour,
L'écriture me semble bizarre.
Au premier abord, je pense que nous ne sommes pas sur de la taille mémoire
de Int[] aTab.
Dans le doute, il vaut mieux mettre IntPtr aTab dont on est sur qu'il
correspond à un pointeur classique tel que le définit int* aTab et jouer des
fonctions de Marshalling telles que:
L'écriture me semble bizarre. Au premier abord, je pense que nous ne sommes pas sur de la taille mémoire de Int[] aTab. Dans le doute, il vaut mieux mettre IntPtr aTab dont on est sur qu'il correspond à un pointeur classique tel que le définit int* aTab et jouer des fonctions de Marshalling telles que: