VS2013error C2440: “=”: 無法從“const char [11]”轉換爲“LPCWSTR”

一般出現這種BUG 的,是由於字符集的問題。在vs2005中有兩個字符集,Unicode 和 Muti-bye。

LPCTSTR在Multi-byte Character方式下與const char*等價,在Unicode方式下與const tchar*等價。所以在Unicode方式下對其賦值像下面這樣:

LPCTSTR location = _T("Software//");//加_T進行轉化

否則報錯:error C2440: “初始化”: 無法從“const char [10]”轉換爲“LPCTSTR”

同樣在Unicode方式下對於AfxMessageBox(_T("Software//"));

否則報錯: error C2665: “AfxMessageBox”: 2 個重載中沒有一個可以轉換所有參數類型

(關於Unicode 和Muti-byte 的區別,我想引用http://blog.csdn.net/Jackiezhw/archive/2009/02/17/3901685.aspx這個網址,已經有了相關的介紹。)

遇到這種BUG的修改方法爲:
1.中文版:

工程-》設置屬性-》配置屬性-》常規-》項目默認值-》字符集

注意:
原來是Unicode (安裝時的默認值)
改爲使用多字符集   。如下圖中彩色部分,自己看吧!

2.英文版:

Project-》Properties-》Configuration Properties-》General-》Project Defaults-》Character Set


代碼在VC6中沒問題.因爲它的代碼沒有按可編譯爲UNICODE版本的方式寫,而VS2005之後版本默認是UNICODE編碼的.所以所有使用到字串的地方都會出錯.

方法:修改VS2005之後版本的設置:選擇你的項目->屬性->常規->設置爲不使用UNICODE,發現設置爲多字節字符集也可以。發現用VS2005打開VC6的源代碼,轉換後是使用的多字節字符集。

在VS2013中,項目->屬性->常規->字符集:改爲“使用多字節字符集”即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章