2010-06-29 1 views
0

그래서 32 비트 응용 프로그램을 64 개 빌드하려고합니다. 모든 64 비트 라이브러리에 연결되어 있으며 64 비트 용으로 다시 컴파일했습니다.VS2008의 64 비트 Windows에서 빌드하면 C2632 오류가 발생합니다.

지금 이상한 오류가 발생합니다. 그물에서 비슷한 오류를 보았지만 그 주제에서는 유용하지 않습니다.

이 동작을 일으킬 수있는 원인은 무엇입니까?

경고 C4091 : '형식 정의': \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v6.0A \는 \ windef.h 오류 C2632을 포함한다 : '부동 어떤 변수가 C를 선언하지 않습니다'부동 '의 왼쪽에 무시 이중 '다음' '불법
C : \ 프로그램 파일 \ MicrosoftSDKs \ WINDOWS \ v6.0A \ 포함 \ windef.h

경고 C4091 :'형식 정의 '의 왼쪽에 무시'더블 '때 어떤 변수 없습니다 오류 44 오류 C2632 : 'double'다음에 'double'이 잘못되었습니다.
C : \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ include \ wtypes.h

경고와 오류는 같은 줄에 대한 것입니다. 분명히 wtypes.h 및 windef.h과의 문제가되지 않습니다 (그리고 내가 그것에 대해 아무것도 못할 경우)는 뭔가 다른이어야한다, 그래서

typedef float    FLOAT; 

typedef double DOUBLE; 

은 분명히 이러한 자체는 괜찮습니다. 내 프로젝트에서이 원인이되는 파일

아이디어가 있으십니까?

+0

FLOAT 및 DOUBLE은 이전에/다른 곳에서 매크로로 정의되어 있습니까? (로컬 출처, 심지어?) –

답변

2

FLOATDOUBLE은 이전에 #defined에서 double으로 보입니다. 다른 라이브러리의 결과 일 수 있지만 64 비트 컴파일로 전환 할 가능성은 거의 없습니다. windows.h 또는 windef.h 또는 중 파일 경고에 대한 직접 책임을 포함하여 이전

#undef FLOAT 
#undef DOUBLE 

을 수행하십시오.

+0

이것이이 문제를 수정 한 것으로 보이지만 어떻게 정의를 밟았는지 알아낼 수 있습니까? – grobartn

+2

소스 파일의 첫 줄에'#define DOUBLE TESTER'와 같은 것을 넣으면, 컴파일러는 'double'으로 재정의 된 지점 (가장 가능성이있는 줄 포함)에서 소리를 지어 줘야합니다. –

+0

시행 착오 (주석 출력 #includes) 또는 전처리 출력 (cl/E)을 볼 수도 있습니다. Mark B의 제안은 아마도 최선의 방법 일 것입니다. – Nick