我正在开发一个曾在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>'
感谢。
答案 0 :(得分:1)
这解决了问题。
答案 1 :(得分:0)
“更好”的解决方案可能是:
pin_ptr<const WCHAR> pPath = PtrToStringChars(devPath);
然后使用CreateFileW
,因为你有一个Unicode字符串。
这样,无论项目文件的Unicode配置如何,您的代码都能正常工作。