我正在寫一個項目(一個STM32的HID接口)由visual C++ 2008之前工作過的人工作。所以要模仿導致問題的行,我創建了一個示例winform應用程序在VC++ 2008.下面是這一行的單擊事件,只有當爲x64構建時纔給出構建錯誤,但是win32構建不會給出任何構建錯誤並且工作正常。pin_ptr和interior_ptr在vC++
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
}
};
而且僅出現在64位版本所生成錯誤是:
Error 1 error C2440: 'initializing' : cannot convert from 'cli::interior_ptr<Type>' to 'cli::pin_ptr<Type>'
感謝。
實際上,我需要將它作爲第一個參數傳遞給CreateFile。而對於32位它的工作,這個問題只發生在64位。感謝您的快速回復。 – Vikyboss 2012-01-16 20:30:14
PtrToStringChars總是返回一個常量wchar_t;你的64位版本是不是編譯成Unicode的? – Joe 2012-01-16 21:14:18
謝謝先生。我已經回答了我的問題。你說得對,我把字符集設置爲unicode。它被設置爲無字符集。多字節字符集也給出相同的錯誤信息。但是Unicode修復了它。再次感謝。 – Vikyboss 2012-01-16 22:04:11