關於UNICODE和多字符集的問題

2021-09-24 14:04:12 字數 909 閱讀 9182

1.遇到警告:

vc2013提示warning c4996: 'mbcs_support_deprecated_in_mfc': mbcs support in mfc is dep

出現這樣的警告,原因是因為:由於歷史原因,mfc同時支援 unicode 和 mbcs(multi-byte character set),但 unicode 日漸變得流行,而 mbcs 逐漸用得越來越少,所以,新版本的 mfc 已經把 mbcs 作為過時的方法,所以用新版本的 visual studio 編譯 mbcs 程式的時候會出現這樣的警告資訊,建議大家在新的程式中廢棄 mbcs 而採用 unicode。但是,對於已經採用 mbcs  的舊版的vc++程式,我們不打算將其遷移至 unicode,又不想見到大量的 c4996 警告,怎麼辦呢?關閉編譯器的 c4996 警告,需要在 preprocessor 定義中增加 no_warn_mbcs_mfc_deprecation。

參考:學習內容:

2.令2013支援多位元組

3.. 解決出現的鏈結錯誤

編譯過程**現乙個鏈結錯誤: mfcs120d.lib(dllmodul.obj) : error lnk2005: _dllmain@12 already defined in msvcrtd.lib(dllmain.obj)。產生錯誤的原因是工程同時使用了crt庫和mfc庫,並且鏈結順序不對,crt 庫對 new、delete 和 dllmain 函式使用弱外部鏈結。mfc 庫也包含 new、delete 和 dllmain 函式。這些函式要求先鏈結 mfc 庫,然後再鏈結 crt 庫。解決辦法是:選擇「專案 -> 屬性 -> 鏈結器 -> 輸入」欄,在其中的「忽略特定的庫」這一欄輸入:msvcrtd.lib mfcs120d.lib, 然後,在「附加庫」這一欄中輸入: mfcs120d.lib msvcrtd.lib 問題即可解決。

**

Unicode字符集和多字符集

由於各國語言的加入,ascii已經不能滿足資訊交流的需要,因此,為了能夠表示其它國家的文字,各國在ascii的基礎上制定了自己的字符集,它們正式的名稱應該是mbcs multi byte chactacter system,即多位元組字元系統 型別說明 unicode ansi 通用型別 字元wch...

Unicode和多字符集的區別

先來看看錯誤 error c2664 hmodule loadlibraryw lpcwstr 無法將引數 1 從 const char 10 轉換為 lpcwstr 為什麼會出現這樣的錯誤呢?原來用vc新建的專案,預設都是使用unicode字符集。當出現多種程式語言時,由於自身編碼格式的非統一性,...

Unicode 和多位元組字符集 MBCS

有些國際市場以大字符集來使用日文和中文等語言。為了支援這些市場的程式設計,microsoft 基礎類庫 mfc 支援以兩種方式處理大字符集 unicode 多位元組字符集 mbcs unicode 字串的 mfc 支援 整個類庫有條件地支援 unicode 字元和字串。特別是 cstring 類也支...