天天看點

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中,項目->屬性->正常->字元集:改為“使用多位元組字元集”即可。

轉載于:https://blog.51cto.com/zhangyongjian/1399537