Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1821 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Echec d'appel d'une fonction COM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Echec d'appel d'une fonction COM

n°927102
hellbilly
free smile
Posté le 18-12-2004 à 20:48:27  profilanswer
 

salut,
 
j'ai une dll COM avec la fonction suivante :

Code :
  1. Foo::func(BSTR str)


 
Lorsque j'appelle ma fonction à partir d'un programme VB avec comme paramètre une String, ca foire.
Par contre si je mets en paramètre une fonction qui retourne une String ou une chaine constante c'est ok.
 
En clair,

Code :
  1. Function getStr() as String
  2.   getStr="hello"
  3. End Function
  4. Dim str as String
  5. str = "hello"
  6. Call obj.func(str) 'ECHEC
  7. Call obj.func("hello" ) 'OK
  8. Call obj.func(getStr) 'OK


 
Quelqu'un sait pourquoi ?

mood
Publicité
Posté le 18-12-2004 à 20:48:27  profilanswer
 

n°927268
Lam's
Profil: bas.
Posté le 19-12-2004 à 02:04:40  profilanswer
 

En substance, ça a l'air d'être parce que lorsque tu utilises le type String directement, il passe la chaîne par référence plutôt que par valeur, et boum:
http://support.microsoft.com/kb/118643/EN-US/
 
Essaye soit de modifier la façon dont ton objet COM est déclaré en VB (quoique, je crois que ça ne se change pas), soit de déclarer ta chaîne en Variant. Ou alors, google pour voir comment convertir des chaînes VB en chaînes C-like.

n°927407
hellbilly
free smile
Posté le 19-12-2004 à 13:27:20  profilanswer
 

Effectivement la chaine est passée par référence donc l'appel de ma fonction échoue. En mettant

Code :
  1. Foo::func(BSTR *str)

ca passe pour la String, mais plus pour la chaine constante et le retour de getStr ce qui est finalement logique.
 
pfff ce que c'est lourd de faire du vb...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Echec d'appel d'une fonction COM

 

Sujets relatifs
Problème syntaxique de définition de template pour une fonction membreSortir une variable d'un fonction ?
Erreur de segmentation - appel strseppassage de parametres a 1 fonction pb de retour
[SQL/PHP] Probleme avec la fonction MAX()Modifier les variables d'appel...
appel méthode c++ depuis cenvoyer une fonction dans un mail
entetes dans la fonction mailfonction mail ->23 caracteres max.
Plus de sujets relatifs à : Echec d'appel d'une fonction COM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR