pin_ptr и interior_ptr в vc ++ - PullRequest
       33

pin_ptr и interior_ptr в vc ++

0 голосов
/ 16 января 2012

Я работаю над проектом, который был написан (HID-интерфейс для STM32) человеком, который раньше работал в Visual C ++ 2008. Поэтому для имитации строки, вызывающей проблему, я создал пример приложения winform в VC ++ 2008.Вот событие click с одной строкой, которая дает ошибку сборки только при сборке для x64, но сборка win32 не выдает никакой ошибки сборки и работает нормально.

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
         }
};

и ошибка сборки, которая появляется толькодля сборки x64 это:

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 января 2012
  1. Щелкните правой кнопкой мыши по проекту
  2. Свойства
  3. Свойства конфигурации
  4. Общие
  5. Набор символов "Использовать набор символов Unicode"

Это решило проблему.

0 голосов
/ 17 января 2012

Возможно, «лучшее» решение:

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

, а затем используйте CreateFileW, потому что у вас есть строка Unicode.

Таким образом, ваш код будет работать независимо от конфигурации Unicode в файле проекта.

...