Question

Je travaille sur un projet qui a été écrit (un Intef Hid pour STM32) par une personne qui travaillait auparavant dans Visual C ++ 2008. Donc, pour imiter la ligne qui cause un problème, j'ai créé un exemple d'application WinForm dans VC ++ 2008. Voici le Cliquez sur l'événement avec cette ligne d'une seule ligne d'erreur de construction uniquement lorsqu'il est construit pour X64, mais une version Win32 ne donne aucune erreur de construction et fonctionne bien.

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             String^ devPath =  this->textBox1->Text;
             MessageBox::Show(devPath);
             pin_ptr<const TCHAR> pPath = PtrToStringChars(devPath); *error line
         }
};

et l'erreur de construction qui n'apparaît que pour la construction x64 est:

Error   1 error C2440: 'initializing' : cannot convert from 'cli::interior_ptr<Type>' to 'cli::pin_ptr<Type>'

Merci.

Était-ce utile?

La solution

  1. Faites un clic droit sur le projet
  2. Propriétés
  3. Propriétés de configuration
  4. Général
  5. Set de caractères "Utiliser un jeu de caractères Unicode"

Cela a résolu le problème.

Autres conseils

La "meilleure" solution est probablement:

pin_ptr<const WCHAR> pPath = PtrToStringChars(devPath);

puis utiliser CreateFileW, parce que vous avez une chaîne Unicode.

De cette façon, votre code fonctionnera quelle que soit la configuration UNICODE-File de projet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top