Pregunta

Estoy trabajando en un proyecto que fue escrito (un HID Inteface para STM32) por una persona que trabajó antes en Visual C ++ 2008. Por lo tanto, para imitar la línea que está causando un problema, creé una aplicación WinForm de muestra en VC ++ 2008. Aquí está el Haga clic en el evento con esta línea que da un error de compilación solo cuando se crea para X64, pero una compilación Win32 no da ningún error de construcción y funciona 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
         }
};

y el error de compilación que aparece solo para la compilación x64 es:

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

Gracias.

¿Fue útil?

Solución

  1. Haga clic derecho en el proyecto
  2. Propiedades
  3. propiedades de configuración
  4. General
  5. Establecimiento de caracteres "Usar un conjunto de caracteres unicode"

Esto solucionó el problema.

Otros consejos

La solución "mejor" es probablemente:

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

y luego usar CreateFileW, porque tienes una cadena Unicode.

De esa manera, su código funcionará independientemente de la configuración de unicode de archivo de proyecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top