解決:錯誤1 error C2440: “初始化”: 無法從“char *”轉換爲“ATL::CStringT

在一個測試 連接數據庫的 函數中 有類似 數據類型轉換的錯誤:

函數源碼如下:

void CStudentScoreDlg::OnClickedButton1()
{
    // TODO:  在此添加控件通知處理程序代碼

    MYSQL m_sqlCon;
    mysql_init(&m_sqlCon);
    // localhost:服務器 root/xxx爲賬號密碼 managesystemdb爲數據庫名 3306爲端口    
    if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "xxx", "managesystemdb", 3306, NULL, 0))
    {
        AfxMessageBox(_T("訪問數據庫失敗!"));
        CString e = mysql_error(&m_sqlCon);//需要將項目屬性中字符集修改爲“使用多字節字符集”或“未設置”  
        MessageBox(e);
        return;
    }
    else
    {
        AfxMessageBox(_T("成功!"));
        mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//解決從數據庫中讀取數據後漢字亂碼顯示的問題  
    }

}

函數中的 CString e = mysql_error(&m_sqlCon);這行 報下面的錯誤

  • 錯誤 1 error C2440: “初始化”: 無法從“char *”轉換爲“ATL::CStringT<BaseType,StringTraits>
    還有幾個錯誤
  • 錯誤 4 error C2664: “sendto”: 不能將參數 2 從“CString”轉換爲“const char *”
  • 錯誤 5 error C2664: “CWnd::SetDlgItemTextW”: 不能將參數 2 從“const char [4]”轉換爲“LPCTSTR”

  • 9 IntelliSense: “const char *” 類型的實參與 “LPCTSTR” 類型的形參不兼容

  • 7 IntelliSense: 不存在從 “char *” 轉換到"ATL::CStringT<wchar_t, StrTraitMFC_DLL<wchar_t, ATL::ChTraitsCRT<wchar_t>>>"的適當構造函數

問題來源:
unicode字符問題。2013工程默認是寬字符版本

解決方法:
菜單 項目 -> 屬性 (打開屬性頁) -> 配置屬性 -> 常規 -> 字符集
單前選中的應該是“使用Unicode字符集”,改爲“使用多字節字符集”

更改完後確定,即可

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