[VS2008] MFC에서 다음과 같은 에러가 나는 경우.

d:\kchris\*****\_pr2view.cpp(114) : error C2665: ‘AfxMessageBox‘ : none of the 2 overloads could convert all the argument types
1>        c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(5372): could be ‘int AfxMessageBox(LPCTSTR,UINT,UINT)’
1>        c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(5374): or       ‘int AfxMessageBox(UINT,UINT,UINT)’
1>        while trying to match the argument list ‘(const char [15])’
1>d:\kchris*****\_pr2view.cpp(121) : error C2665: ‘AfxMessageBox’ : none of the 2 overloads could convert all the argument types
1>        c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(5372): could be ‘int AfxMessageBox(LPCTSTR,UINT,UINT)’
1>        c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(5374): or       ‘int AfxMessageBox(UINT,UINT,UINT)’
1>        while trying to match the argument list ‘(const char [13])’
1>Generating Code…
1>Build log was saved at “file://d:\kchris\*****\_pr2\Debug\BuildLog.htm”
1>_pr2 – 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

—————————————————————————————————

특히 Vosual C++ 6.0을 사용하던 유저들이 이런 일을 자주 겪는다.
AfxMessageBox 관련, 그리고 textout 부분에서 에러가 자주 나는 부분인데,
해결책은 의외로 간단하다.

Visual Studio 2008은 프로젝트를 생성하면 유니코드를 사용하도록 되어 있다.
이것 때문에 문자열에서 멀티바이트를 지원하지 않는 경우가 생긴다.

메뉴에 있는 Project – (Project name)Properties [Alt + F7도 가능] 로 들어간다.
Configuration Properties의 General 항목을 클릭하자.
Project Default란에 Character Set 이 UniCode Character set으로 되어 있다면 Multibyte로 적용시켜주면 된다.

애초에 vs2008로 배우면 이런 문제들은 겪을 일이 없겠지만 많은 학교와 학원에서 아직 VC6.0을 많이 사용하고 있는 관계로 자주 겪는 문제다.

Dr.kchris

Hello, I'm Dr.kchris, a neuroscience researcher. I love studying and trying new things and also love challenging myself. Have a great day! :)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.