아~ 젠장할...

 

20061116 또 다시 C1001 내부 컴파일러 오류를 만나다...

 

하드웨어 문제인가...

 

램, 그래픽카드, 파워 다 갈아봤다...

 

남은건 엄마보드...

 

컴터 조립에 OS재설치에 젠장 3일을 소비했다...

 

내부 컴파일러 오류 및 Windows 2003 Server 퍼런화면때문에...

 

아직 엄마보드는 못갈아 봤다...

 

엄마보드갈고 다시 인내심 테스트 하러 간다...

 

 

==========================================================================================

 

 

http://support.microsoft.com/kb/305980/ko

 

 

PRB: C1001 컴파일러 오류 메시지 - 문제 해결 제안 사항

기술 자료 ID : 305980
마지막 검토 : 2006년 2월 17일 금요일
수정 : 2.0

현상

C 또는 C++ 소스 파일을 컴파일할 때 다음과 유사한 내용의 오류 메시지가 나타날 수 있습니다.
C:\Projectcode\Test.cpp(20) : 심각한 오류 C1001: 내부 컴파일러 오류(컴파일러 파일 'msc1.cpp', 줄 1089) 자세한 내용을 보려면 Visual C++ 도움말 메뉴에서 기술 지원 명령을 선택하거나 기술 지원 도움말 파일을 참조하십시오.
또는
심각한 오류 C1001: 내부 컴파일러 오류(컴파일러 파일 '@(#)main.c:1.82', 줄 289) 자세한 내용을 보려면 Visual C++ 도움말 메뉴에서 기술 지원 명령을 선택하거나 기술 지원 도움말 파일을 참조하십시오.
Visual Studio IDE(통합 개발 환경)에서 빌드할 때 첫 번째 파일을 컴파일하는 동안에 오류 메시지가 나타날 수 있습니다. 이런 오류 메시지는 특정 파일을 컴파일하는 동안 항상 나타나거나 프로젝트의 어떤 파일을 컴파일하는 동안 임의로 나타날 수도 있습니다. 또한 네트워크 드라이브의 대규모 프로젝트에서 오류 메시지가 불규칙하게 나타날 수도 있습니다. 오류 메시지에는 프로젝트의 파일 이름과 괄호로 묶은 줄 번호가 나타나거나 파일 이름이 나타나지 않을 수 있습니다. 이 문서의 "현상" 절에 두 가지 경우가 모두 나와 있습니다. 컴파일러 파일 이름은 컴파일러의 원래 소스 파일에 해당하며 C1001 오류마다 다를 수 있습니다.

원인

이런 문제는 컴파일러가 구문에 대해 올바른 코드를 생성할 수 없을 때 발생합니다. 대개 소스 파일에 컴파일러가 쉽게 인식할 수 없는 식 조합이 들어 있으면 이런 문제가 발생합니다.

"C1001" 오류 메시지가 발생하는 경우는 다음과 같습니다.
컴파일러에 알려진 버그가 있는 경우
컴파일러에 새로운 버그가 있는 경우
소스 파일에서 오른쪽 중괄호(})가 누락된 경우
선택한 컴파일러 최적화 옵션
파일이 손상된 경우
컴퓨터에 하드웨어 문제가 있는 경우

해결 방법

이 문제를 해결하려면 다음과 같이 하십시오.
1. 오류 메시지에 프로젝트의 파일 이름과 괄호로 묶은 숫자가 나타나면 이 숫자는 컴파일러에서 알 수 없는 오류를 발견한 파일의 줄 번호를 나타냅니다. 오류 메시지에 파일 이름이 없으면 3단계로 진행하십시오.

Visual Studio IDE나 명령줄에서 이 파일을 컴파일합니다. CL /c Test.cpp 명령을 사용합니다. 이 명령을 실행하기 전에 Vcvars32.bat을 실행하여 환경 변수를 설정해야 할 수도 있습니다. 이 파일은 Visual C++ installation directory\VC98\Bin 폴더에 있습니다.

오류 메시지가 다시 나타나면 로컬 온라인 도움말과 Microsoft Developer Network(http://search.microsoft.com (http://search.microsoft.com/))에서 키워드 "C1001", 컴파일러 파일 이름(예: "Msc1.cpp"), 오류 메시지의 줄 번호(예: 줄 "1089")가 들어 있는 Microsoft 기술 자료 문서를 찾으십시오. 검색한 기술 자료에서 문제의 원인과 해결 방법에 대한 설명을 제공할 수 있습니다.
2. 오류가 보고된 소스 파일의 특정 줄에 코딩 오류가 있는지 확인합니다. 코드가 복잡한 식이면 오류가 보고된 줄을 다시 작성하거나 문제가 되는 줄 주변에 있는 코드 몇 줄을 다시 작성합니다. 그러면 문제가 해결될 수도 있습니다.
3. 최적화 옵션을 사용하여 파일이나 프로젝트를 컴파일하면 그로 인해 오류가 발생할 수 있습니다. 이 절에서 더 진행하기 전에 프로젝트를 Win32 디버그 버전으로 빌드해 봅니다. Win32 디버그 빌드가 "C1001" 오류 메시지를 생성하면 5단계로 진행합니다.

최적화 옵션을 하나, 여러 개 또는 모두 제거하여 문제를 해결할 수도 있습니다.

Visual Studio 6.0 IDE에서 Win32 Release 빌드를 선택한 경우 C 또는 C++ 프로젝트 설정에서 /O1(크기 최소화), /O2(속도 최대화), /Ox(최대 최적화) 또는 사용자 지정을 선택할 수 있습니다. 사용자 지정에서 원하는 다른 옵션을 선택할 수 있습니다. 어떤 옵션에 문제가 있는지 확인하려면 한 번에 하나씩 옵션을 선택 취소한 다음 오류가 발생하지 않을 때까지 컴파일해 봅니다. 일반적으로 가장 가능성이 높은 옵션은 /Og, /Oi, /Ob1 및 /Oa입니다.

Visual Studio .NET IDE를 사용할 때 컴파일러 옵션을 변경하는 방법에 대한 내용은 다음 기술 자료 문서를 참조하십시오.
311065 (http://support.microsoft.com/kb/311065/) HOWTO: Visual C++ .NET 컴파일러의 기본 컴파일러 옵션 수정
/O1, /O2 및 /Ox의 컴파일러 옵션 조합은 다음과 같습니다.
/O1: /Og /Os /Oy /Ob2 /Gs /Gf /Gy
/O2: /Og /Oi /Ot /Oy /Ob2 /Gs /Gf /Gy
/Ox: /Og /Oi /Ot /Oy /Ob2 /Gs

(참고: Visual C++ 6.0 및 5.0에서는 /Ob2 대신 /Ob1을 사용합니다.
명령줄에서 컴파일할 때는 /O2 /Oi-에서처럼 빼기 기호(-)를 사용하여 옵션을 하나 이상 제거합니다. 앞의 경우에는 /O2에서 /Oi 옵션이 제거됩니다. 또는, 옵션 하나로 시작해서 한 번에 하나씩 다른 옵션을 추가하여 어떤 옵션 또는 옵션 조합이 C1001 오류를 발생시키는지 확인할 수 있습니다.

오류를 발생시킨 최적화 옵션을 확인한 후 프로그래밍 방식으로 그 옵션을 사용할 수 없게 설정할 수 있습니다. 옵션을 사용할 수 없게 하려면 아래의 예제 코드(/Og 옵션을 사용할 수 없게 함)에 나와 있는 것처럼 오류가 발생한 함수 주위에 optimize pragma off 인수를 사용한 다음 나머지 모듈에서는 이 옵션을 사용할 수 있도록 설정합니다. 모든 옵션을 사용할 수 없게 설정하거나 사용할 수 있게 설정하려면 #pragma optimize( "", off ) 또는 #pragma optimize( "", on )을 각각 사용합니다.
#pragma optimize( "g", off ) // Function definition . . #pragma optimize( "g", on ) 
4. 오류가 보고되는 소스 파일의 줄 수가 컴파일러 한계인 65,536보다 적은지 확인합니다. 줄 수가 한계보다 많으면 파일에서 몇 줄을 주석으로 처리한 다음 오류가 다시 발생하는지 확인합니다.
5. 도킹 스테이션에서 휴대용 컴퓨터를 사용하는 경우에는 도킹 스테이션에서 휴대용 컴퓨터를 제거하고 컴퓨터를 다시 시작한 다음 오류가 더 이상 발생하지 않는지 확인합니다. 일부 휴대용 컴퓨터 모델에서 이런 문제가 발생할 수 있습니다.
6. 하드 디스크에 사용할 수 있는 디스크 공간이 충분히 있는지 확인합니다. 권장되는 디스크 공간은 최소 500MB입니다. 또한 최대 가상 메모리 페이징 파일 크기가 500MB 이상으로 설정되었는지 확인합니다.
7. 컴퓨터를 안전 모드에서 다시 시작한 다음 오류가 다시 발생하는지 확인합니다. 오류가 더 이상 발생하지 않는다면 컴퓨터에 손상된 드라이브가 있는 것입니다. 비디오 드라이버가 손상되었을 가능성이 높습니다. 드라이버 제조업체에 새 드라이버를 요청하십시오.
8. 컴퓨터에서 실행 중인 바이러스 백신 소프트웨어를 모두 중지하거나 제거합니다.
9. 앞에서 설명한 방법으로 오류가 해결되지 않으면 다음과 같이 합니다.
a. 해당 프로젝트가 네트워크에서 공유되어 있으면 프로젝트를 로컬 하드 디스크로 옮긴 다음 오류가 발생하는지 다시 확인합니다.
b. 프로젝트가 매우 큰 경우에는 특히 특정 프로젝트에만 오류가 발생할 수 있습니다. 이런 경우에는 오류가 다른 컴퓨터에서도 발생하는지 확인합니다. 다른 컴퓨터에서도 발생한다면 컴파일러의 한계 때문에 문제가 발생하는 것일 수도 있습니다. 프로젝트의 파일 수를 줄이거나 대규모 파일의 경우 크기를 줄여서 확인할 수 있습니다. 다른 컴퓨터에서는 오류가 발생하지 않는다면 오류가 보고되는 컴퓨터에 하드웨어 문제가 있는 것입니다.
c. "Hello world"를 인쇄하는 간단한 한 줄짜리 C 또는 C++ 프로그램을 만듭니다. Visual Studio IDE나 명령줄에서 이 파일을 컴파일해 봅니다.
d. 기본 AppWizard 작성 Microsoft Foundation Classes(MFC) 프로젝트를 빌드해 봅니다.

참고: c 또는 d 단계에서 오류가 발생하면 소프트웨어 또는 하드웨어와 관련된 설치 문제가 있음을 의미합니다. 대부분의 경우 이 문제는 손상된 장치 드라이버(7단계 참조), 손상된 RAM 모듈 또는 손상된 하드 디스크와 같이 하드웨어와 관련이 있는 것으로 밝혀졌습니다.
e. 프로그램을 제거한 다음 다시 설치합니다. Visual Studio .NET을 사용 중일 때는 Readme.htm 파일에서 프로그램을 제거 방법에 대한 설명을 읽어 보십시오. Visual C++ 6.0을 사용 중일 때는 Microsoft 기술 자료의 다음 문서를 참조하십시오.
248347 (http://support.microsoft.com/kb/248347/) Visual Studio 6.0을 새로 설치하기 위한 준비 및 설치 방법
f. CD-ROM 제품이 손상되었을 가능성도 있습니다. 다른 CD-ROM 세트가 있다면 설치해 봅니다. 하드 디스크나 RAM 모듈의 품질을 문제의 원인으로 단정짓기 전에 하드 디스크를 포맷하고 운영 체제를 다시 설치한 다음 프로그램을 다시 설치해 보십시오.
1단계에서 문제를 해결하는 방법을 제공하는 문서가 검색되지 않거나 오류가 2 또는 3단계에서 해결되는 경우에는 문제가 알려지지 않은 새로운 버그를 일 수 있습니다. 다음 Microsoft 웹 사이트의 Microsoft 고객기술지원부(PSS)로 문제를 보고하십시오.
기술 지원 서비스 안내 (http://support.microsoft.com/default.aspx?ln=ko)

참조

다른 인기 있는 Visual C++ .NET Microsoft 기술 자료 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
Visual C++ .NET(2002) 지원 센터(Visual C++ .NET (2002) Support Center)
http://support.microsoft.com/default.aspx?xmlid=fh%3BEN-US%3Bvcnet (http://support.microsoft.com/default.aspx?xmlid=fh%3ben-us%3bvcnet)




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
Microsoft Visual C++ .NET 2002 Standard Edition
Microsoft Visual C++ 5.0 Standard Edition
Microsoft Visual C++ 6.0 서비스 팩 5
키워드: 
kb32bitonly kbcompiler kberrmsg kbprb KB305980
안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스

댓글을 달아 주세요