解決:エラー1 error C 2440:「初期化」:「char*」から「ATL::CStringT」に変換できない

2296 ワード

接続データベースをテストする関数で、データ型変換のようなエラーが発生しました.
関数のソースコードは次のとおりです.
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 C 2440:「初期化」:「char*」から“ATL::CStringTに変換できません.また、いくつかのエラー
  • もあります.
  • エラー4 error C 2664:「sendto」:パラメータ2を「CString」から「const char*」
  • に変換できません.
  • エラー5 error C 2664:「CWnd::SetDlgItemTextW」:パラメータ2を「const char[4]から「LPCTSTR」
  • に変換できません.
  • 9 IntelliSense:「const char*」タイプの実参加「LPCTSTR」タイプのパラメータは
  • と互換性がありません.
  • 7 IntelliSense:「char*」から"ATL::CStringT>>"に変換する適切な構造関数
  • は存在しない.
    問題のソース:unicode文字の問題.2013プロジェクトのデフォルトはワイド文字バージョンです
    解決策:メニュー項目->プロパティ(プロパティ・ページを開く)->プロパティの構成->一般->文字セット・シートの前に選択したのは「Unicode文字セットの使用」で、「マルチバイト文字セットの使用」に変更します.
    変更が完了したら確定します.