2011-12-13 2 views
0

VC++ 2008 Windows Form Application을 작성 중입니다. VC6 프로젝트의 일부 클래스를 사용해야합니다.VC++ 6에서 VC++ 2008로 코드를 옮길 때 오류가 발생했습니다.

나는 다음과 같은 방법을 포함하는 하나 개의 파일을 추가 할 때 :

bool Property::createPaths(string &sPaths) 
{ 
    char *tok = NULL; 
    char seps[] = "\\"; 
    string str; 
    if (sPaths.size() > 0) 
    { 
     tok = strtok((char*)sPaths.c_str(),seps); 
     str = tok; 
     while (tok != NULL) 
     { 
      int res = CreateDirectory(str.c_str(),NULL); 
      tok = strtok(NULL,seps); 
      if (tok != NULL) 
      { 
       str += "\\"; 
       str += tok; 
      } 
     } 
     return true; 
    } 
    return false; 
} 

내가 가지고 오류가 CreateDirectory 전화 불평 :

* 오류 C2664 : 'CreateDirectory': 매개 변수 1 변환 할 수 없습니다를 'const char 'to 'LPCTSTR'

온라인으로 검색 한 경우 일부 구성이 필요합니다. 이 문제를 해결하기 위해 내 VC2008 프로젝트에 배정. 누가 어디서 어떻게 말할 수 있니?

답변

3

TCHAR*이 될 것으로 예상되는 함수에 전달 중입니다.

TCHAR

은 컴파일 설정에 따라 char 또는 wchar_t로 정의 - 그리고 VC2008에서 기본적으로는 wchar_t입니다. std::string을 사용하면 TCHARchar 인 것으로 간주되어 오류가 발생합니다.

이 합리적인 사용 가능한 수정 사항이 있습니다 프로젝트 설정에서

  • , Use Multi-Byte Character Set-Configuration Properties/General/Character Set 변경가.

또는

  • TCHAR의 잠재적으로 다른 정의를 고려하여 코드를 리팩토링

    - 당신은 (적절한 형식 정의를 사용하여) std::basic_string<TCHAR>std::string 또는 std::wstring의 사용을 대체하여이 작업을 시작하고 문자열을 감싸는 것 리터럴은 _T 또는 _TEXT 매크로입니다.
+0

+1 나는 대답을 쓰지 않고 10 분 동안 나를 쓰다듬 으라. –

관련 문제