Problème insertion d'un objet dans une comboBox [Résolu]

Signaler
Messages postés
16
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
15 avril 2009
-
Messages postés
16
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
15 avril 2009
-
Bonjour,

je développe actuellement une application en Visual C++ sous Visual C++ 2008 Express, et utilisant DirectShow.
Dans cette application, à un moment donné, je récupère un objet de type BSTR et j'aimerais l'ajouter aux éléments d'une comboBox. Ne sachant trop comment l'insérer sous la forme que je voulais (et acceptée par le compilateur, j'ai pondu le code suivant (ouais, je sais, c'est moche, c'est codé à l'arrache) :

                    BSTR o = (varName.bstrVal);
                    _bstr_t bstr_t(o);
                    std::string str(bstr_t);
                    String^ cstr = gcnew String(str.c_str());
                    cBoxCameras->Items->Add(cstr);

J'ai donc pour cela dû ajouter les include suivants : #include <string> et #include <String>.

Or, au moment de l'édition des liens, je reçois le message d'erreur suivant :

error LNK2022: échec de l'opération sur les métadonnées (8013118D) : Informations de disposition incohérentes dans des types dupliqués

D'après la msdn (ici), cela vient du fait qu'un type (à priori string ou String, vu que c'est quand j'utilise l'un des deux que je reçois l'erreur) est défini dans deux modules, mais de façon différente. Quelqu'un peut-il m'aider et me dire ce que je peux faire pour résoudre ce problème?

Sinon, s'il existe un autre moyen d'insérer l'objet de type BSTR dans la comboBox, je suis preneuse aussi!

Merci!

2 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Ceci fonctionnerait-il, par hasard?
BSTR o=...;
String ^cstr=gcnew((LPCTSTR)o);
Messages postés
16
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
15 avril 2009

Il y a une petite erreur dans ta ligne de code, en fait, c'est :

String ^cstr=gcnew String((LPCTSTR)o);

Mais en revanche, ça marche très bien! Il ne m'affiche plus d'erreur à l'édition de liens, et ma String s'affiche bien dans la comboBox!
Merci beaucoup, j'aurais pu chercher encore longtemps!