J'ai un petit problème basique, mais dont je ne viens pas à bout.
En gros, j'ai un programme en VB qui appel une fonction dans une DLL (en
C++). Cette fonction crée un certains nombre de thread, et retourne à
l'appelant. Les threads s'exécutent, mais périodiquement je souhaite
informer la programme client de l'état d'avancement des travaux, et j'ai
donc une adresse de callback d'une fonction de VB passée comme paramètre
depuis le programme VB à la fonction initiale. Or quand un des threads tente
un callback à VB, j'ai une erreur de violation de mémoire (la DLL n'est pas
en cause, car avec un prog de test en C comme client, les callbacks
s'effectuent correctement, n'est pas en cause non plus le contenu de la
fonciton VB appelée : même vide, ça "pète")
Si quelqu'un a une idée ...
Merci
PS j'ai un peu honte de poster un pb aussi "basique" , mais je coince depuis
cet AM
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
Manuel Leclerc
François Müller a écrit :
En gros, j'ai un programme en VB qui appel une fonction dans une DLL (en C++). [...] j'ai donc une adresse de callback d'une fonction de VB passée comme paramètre depuis le programme VB à la fonction initiale. Or quand un des threads tente un callback à VB, j'ai une erreur de violation de mémoire (la DLL n'est pas en cause, car avec un prog de test en C comme client, les callbacks s'effectuent correctement, n'est pas en cause non plus le contenu de la fonciton VB appelée : même vide, ça "pète")
C'est peut être une histoire de convention d'appel : à la "pascal" ou à la "C". Tu devrais poster les prototypes de tes fonctions
François Müller a écrit :
En gros, j'ai un programme en VB qui appel une fonction dans
une DLL (en C++). [...] j'ai donc une adresse de callback
d'une fonction de VB passée comme paramètre depuis le
programme VB à la fonction initiale. Or quand un des threads
tente un callback à VB, j'ai une erreur de violation de mémoire
(la DLL n'est pas en cause, car avec un prog de test en C comme
client, les callbacks s'effectuent correctement, n'est pas en
cause non plus le contenu de la fonciton VB appelée : même
vide, ça "pète")
C'est peut être une histoire de convention d'appel : à la
"pascal" ou à la "C". Tu devrais poster les prototypes
de tes fonctions
En gros, j'ai un programme en VB qui appel une fonction dans une DLL (en C++). [...] j'ai donc une adresse de callback d'une fonction de VB passée comme paramètre depuis le programme VB à la fonction initiale. Or quand un des threads tente un callback à VB, j'ai une erreur de violation de mémoire (la DLL n'est pas en cause, car avec un prog de test en C comme client, les callbacks s'effectuent correctement, n'est pas en cause non plus le contenu de la fonciton VB appelée : même vide, ça "pète")
C'est peut être une histoire de convention d'appel : à la "pascal" ou à la "C". Tu devrais poster les prototypes de tes fonctions
François Müller
"Manuel Leclerc" escribió en el mensaje news: | C'est peut être une histoire de convention d'appel : à la | "pascal" ou à la "C". Tu devrais poster les prototypes | de tes fonctions
Merci qd même, mais, non, ce n'est pas cela . (si la réponse eut été aussi triviale je pense que j'aurais trouvé ;-))) A vrai dire, le pb se produit aussi avec une fonction de callback sans paramètre (j'ai essayé)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread externe (car bien sur quand le callback s'effectue dans le corps de la fonction appelée, ça marche : mais comme je veux un retour avant terminaison des taches, c'est impossible)
F.
"Manuel Leclerc" <manuel.leclerc@alussinan.org> escribió en el mensaje
news:4048988f@neottia.net...
| C'est peut être une histoire de convention d'appel : à la
| "pascal" ou à la "C". Tu devrais poster les prototypes
| de tes fonctions
Merci qd même, mais, non, ce n'est pas cela . (si la réponse eut été aussi
triviale je pense que j'aurais trouvé ;-)))
A vrai dire, le pb se produit aussi avec une fonction de callback sans
paramètre (j'ai essayé)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread
externe (car bien sur quand le callback s'effectue dans le corps de la
fonction appelée, ça marche : mais comme je veux un retour avant terminaison
des taches, c'est impossible)
"Manuel Leclerc" escribió en el mensaje news: | C'est peut être une histoire de convention d'appel : à la | "pascal" ou à la "C". Tu devrais poster les prototypes | de tes fonctions
Merci qd même, mais, non, ce n'est pas cela . (si la réponse eut été aussi triviale je pense que j'aurais trouvé ;-))) A vrai dire, le pb se produit aussi avec une fonction de callback sans paramètre (j'ai essayé)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread externe (car bien sur quand le callback s'effectue dans le corps de la fonction appelée, ça marche : mais comme je veux un retour avant terminaison des taches, c'est impossible)
F.
Manuel Leclerc
François Müller a écrit :
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread externe (car bien sur quand le callback s'effectue dans le corps de la fonction appelée, ça marche : mais comme je veux un retour avant terminaison des taches, c'est impossible)
Il te reste à fournir un handle de fenêtre à ton API du début et à poster des messages depuis tes threads :-)
François Müller a écrit :
Non,à vrai dire, je soupçonne VB de ne pas admettre
d'appels d'un thread externe (car bien sur quand le
callback s'effectue dans le corps de la fonction appelée,
ça marche : mais comme je veux un retour avant terminaison
des taches, c'est impossible)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread externe (car bien sur quand le callback s'effectue dans le corps de la fonction appelée, ça marche : mais comme je veux un retour avant terminaison des taches, c'est impossible)
"Manuel Leclerc" escribió en el mensaje news: | | http://support.microsoft.com/default.aspx? ..
Merci beaucoup !!! (je m'en veut j'aurais pu chercher un peu plus ...)
F.
Vincent Burel
"François Müller" wrote in message news:c2a5pm$1pk7ek$
"Manuel Leclerc" escribió en el mensaje news: | C'est peut être une histoire de convention d'appel : à la | "pascal" ou à la "C". Tu devrais poster les prototypes | de tes fonctions
Merci qd même, mais, non, ce n'est pas cela . (si la réponse eut été
aussi
triviale je pense que j'aurais trouvé ;-))) A vrai dire, le pb se produit aussi avec une fonction de callback sans paramètre (j'ai essayé)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread externe (car bien sur quand le callback s'effectue dans le corps de la fonction appelée, ça marche : mais comme je veux un retour avant
terminaison
des taches, c'est impossible)
non, j'ai déjà fournit de la DLL "C" pour des clients qui programme en VB. et y'avait du thread "C" qui appelait une callback sous VB.
Aucun problème si -1- le fonction VB est correctement prototypée (bon type) -2- la convention d'appel doit être __stdcall.
VB
"François Müller" <fc_muller_NO_SPAM@yahoo.es> wrote in message
news:c2a5pm$1pk7ek$1@ID-99230.news.uni-berlin.de...
"Manuel Leclerc" <manuel.leclerc@alussinan.org> escribió en el mensaje
news:4048988f@neottia.net...
| C'est peut être une histoire de convention d'appel : à la
| "pascal" ou à la "C". Tu devrais poster les prototypes
| de tes fonctions
Merci qd même, mais, non, ce n'est pas cela . (si la réponse eut été
aussi
triviale je pense que j'aurais trouvé ;-)))
A vrai dire, le pb se produit aussi avec une fonction de callback sans
paramètre (j'ai essayé)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread
externe (car bien sur quand le callback s'effectue dans le corps de la
fonction appelée, ça marche : mais comme je veux un retour avant
terminaison
des taches, c'est impossible)
non, j'ai déjà fournit de la DLL "C" pour des clients qui programme en VB.
et y'avait du thread "C" qui appelait une callback sous VB.
Aucun problème si
-1- le fonction VB est correctement prototypée (bon type)
-2- la convention d'appel doit être __stdcall.
"François Müller" wrote in message news:c2a5pm$1pk7ek$
"Manuel Leclerc" escribió en el mensaje news: | C'est peut être une histoire de convention d'appel : à la | "pascal" ou à la "C". Tu devrais poster les prototypes | de tes fonctions
Merci qd même, mais, non, ce n'est pas cela . (si la réponse eut été
aussi
triviale je pense que j'aurais trouvé ;-))) A vrai dire, le pb se produit aussi avec une fonction de callback sans paramètre (j'ai essayé)
Non,à vrai dire, je soupçonne VB de ne pas admettre d'appels d'un thread externe (car bien sur quand le callback s'effectue dans le corps de la fonction appelée, ça marche : mais comme je veux un retour avant
terminaison
des taches, c'est impossible)
non, j'ai déjà fournit de la DLL "C" pour des clients qui programme en VB. et y'avait du thread "C" qui appelait une callback sous VB.
Aucun problème si -1- le fonction VB est correctement prototypée (bon type) -2- la convention d'appel doit être __stdcall.