2014-08-12 4 views
1

이전 MFC 프로그램을 수정하려고합니다. Visual Studio 2013에서 프로젝트를 연 후 아래 유형의 오류가 많이 있습니다. C2664 오류 C++ Visual Studio

#include "stdafx.h" 
#include "AviPlay.h" 

#define OPEN_AVI_VIDEO "open avivideo" 
BOOL initAVI() 
{ 
    return mciSendString(OPEN_AVI_VIDEO, NULL, 0, NULL) == 0; 
} 

AviPlay.cpp

에서

발생 오류가 오류 C2664은 : 'MCIERROR mciSendStringW (LPCWSTR, LPWSTR, UINT, HWND)'를 '[14] CONST 문자'로부터 인수 한 변환 할 수 없습니다 ' LPCWSTR '

Strict를 off로 설정하거나 다른 컴파일러 옵션으로 컴파일러 옵션을 설정해야합니까? 그렇지 않은 경우 수동으로 여러 줄의 코드를 수정할 수 있습니다. 이 경우, 지난 15 년 동안이 코드를 OK로 만들지 만 OK가 아닌 것은 무엇입니까?

미리 감사드립니다.

+1

프로젝트 유형을 유니 코드가 아닌 멀티 바이트로 설정할 수는 있지만 MFC를 사용할 때 유효한 옵션인지 여부는 알 수 없습니다. –

+0

프로젝트가 유니 코드 문자 세트로 설정되었을 수 있습니다. 이로 인해 프로그램이 멀티 바이트 버전 인 mciSendStringA가 아닌 mciSendStringW의 와이드 버전에 링크하게됩니다. – Beed

+0

프로젝트 속성, 일반, 문자 집합에서 멀티 바이트로 설정하면 내 문제가 해결되었습니다. 고마워요! – user3931552

답변

2

LPCWSTR은 char 문자열이 아닌 wchar_t 문자열을 기다리고 있다고 알려줍니다. 기본적으로 모든 Windows API는 이제 wchar_t 문자열 (유니 코드)을 허용합니다. 프로젝트 속성, 일반 페이지, 문자 세트에서 다시 char 문자열로 변경할 수 있습니다. 'Multibyte char set 사용'으로 설정하면 이전과 같이 작동합니다.