2008-09-03 6 views
1

odbcss.h를 포함하는 헤더 파일을 포함 할 때 C++ 컴파일러 오류 C2371이 발생합니다. 내 프로젝트는 MBCS로 설정됩니다.C++ 컴파일러 오류 C2371 - WCHAR의 재정의

C : 오류 C2371 : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v6.0A \는 \ odbcss.h (430)를 포함 'WCHAR를': 재정의; 다른 기본 유형 1>
C : 는 'WCHAR'가

내가 어떤 표시되지 않는 선언을 참조 : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v6.0A \는 \ WINNT.H (289)를 포함 odbcss.h에서 이것을 피하도록 설정할 수 있습니다. 다른 사람이 본 적이 있습니까?

답변

0

이 오류는 이미 선언 된 변수와 같은 이름의 변수를 다시 선언 할 때 발생합니다. odbcss.h가 이미 가지고있는 변수를 선언했는지 살펴 보셨습니까?

0

이 정보가 도움이 되나요? 스레드에서

http://bytes.com/forum/thread602063.html

내용 :

브루노 반 Dooren는 [MVP VC는 ++]하지만 난이 문제의 해결책을 알고있다. "wchar_t를 기본 제공 유형"값 "아니요 (/ Zc : wchar_t-)"로 변경하여 프로젝트 설정을 변경합니다. 그러나 좋은 모양을 만들기 위해 "Xtreme Toolkit Professional Edition"을 사용하고 있습니다. 응용 프로그램의 느낌 프로젝트 설정을 변경하여 위의 문제를 해결하면 새로운 Xtreme Toolkit Library에서 연결 오류가 발생합니다. 그래서 내가 어떻게 프로젝트 설정에서 "wchar_t 내장 형식으로 처리" 값을 "예"수정하고 wab.h 헤더 파일이 포함 된 다음 문을 썼습니다. 해당 설정을 코드 파일 단위로 변경할 수 있으므로 특정 파일 만 해당 설정으로 컴파일됩니다. 과 같은 방법으로 문제를 해결하면 솔루션 중 가장 깨끗합니다.

#undef WIN16

이후 #include "wab.h"

#define WIN16 내 프로젝트가 잘 작동하고 WAB에 관한 모든 것 또한 잘 작동된다. 어느 한 가이드 날, 그 올바른 방법입니다 이 문제를 해결하기 위해 ??? 그리고 이것은 나머지 프로젝트에 어떤 영향을 미칩니 까? 나는 그것에 대해 걱정하지 않을 것이다. 정의가 무엇이든 상관없이 두 경우 모두 16 비트 변수입니다. 나는 최선의 해결책 인 해결책이 아니라 WIN16이 wab.h 파일 내부에 다른 영향을 미치지 않으면 작동 할 것이라고 동의합니다.

-

종류 안부, 브루노 반 Dooren [email protected] 이에 대한 웹 주위에 여러 포럼에 대여섯 게시물이 있습니다

+2

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – Mac

+0

@Mac 콘텐츠를 추가했습니다 ... –

+0

우수! 훨씬 낫다... :) – Mac

1

전용 "_nos_pam을"제거 -을 odbcss.h가 MFC가있는 환경에서 사용될 때 문제가 될 수 있습니다.대부분의 대답에는 포함 된 헤더 순서 변경 (부두 디버깅)이 포함됩니다. odbcss.h를 포함하는 헤더는 네이티브 프로젝트에서 제대로 컴파일되지만, 다른 프로젝트에 포함될 때이 오류가 발생합니다. 우리는 심지어 후자의 프로젝트의 stdafx.h에 넣었습니다. MFC에 기본이 포함 된 직후에 여전히 기쁨이 없었습니다. 마침내 MFC를 사용하지 않는 원래 프로젝트의 cpp 파일로 이동하여 작업을 마쳤습니다 (어쨌든 완료되어야 함 -하지만 코드는 아닙니다). 그래서 우리는 해결 방법을 찾았지만 실제 해결책은 없습니다.