pin_ptr和vc ++中的interior_ptr

时间:2012-01-16 19:43:24

标签: visual-c++ pin-ptr

我正在开发一个曾在visual c ++ 2008中工作的人编写的项目(STM32的HID接口)。因此,为了模仿导致问题的行,我在VC ++ 2008中创建了一个示例winform应用程序。这是一个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 个答案:

答案 0 :(得分:1)

  1. 右键单击项目
  2. 属性
  3. 配置属性
  4. 一般
  5. 字符集“使用Unicode字符集”
  6. 这解决了问题。

答案 1 :(得分:0)

“更好”的解决方案可能是:

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

然后使用CreateFileW,因为你有一个Unicode字符串。

这样,无论项目文件的Unicode配置如何,您的代码都能正常工作。