0

我正在开发一个项目,该项目是由以前在 Visual c++ 2008 中工作的人编写的(STM32 的 HID 接口)。所以为了模仿导致问题的行,我在 VC++ 2008 中创建了一个示例 winform 应用程序。这里是仅当为 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>'

谢谢。

4

2 回答 2

1
  1. 右键单击项目
  2. 特性
  3. 配置属性
  4. 一般的
  5. 字符集“使用 Unicode 字符集”

这解决了问题。

于 2012-01-16T22:05:53.417 回答
0

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

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

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

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

于 2012-01-16T22:10:10.920 回答