2011-04-20 6 views
16

우리는 32 비트 디버그 모드에서 _ITERATOR_DEBUG_LEVEL = 0과 같이 잘못된 플래그로 컴파일 된 다른 공급 업체의 라이브러리를 사용하고 있습니다. 버그 리포트를 이미 제출했지만 중간 솔루션이 필요합니다. 우리는 stl을 사용하지 않기 때문에이 라이브러리를 사용하는 하위 프로젝트에 대해이 플래그를 자유롭게 변경할 수 있습니다. 그러나 나는 그렇게하는 법을 알 수 없다. 내가 시도한 것은 작동하지 않았다 :VS2010에서 _ITERATOR_DEBUG_LEVEL을 (를) 설정하는 방법은 무엇입니까?

/D_ITERATOR_DEBUG_LEVEL=0 
> LINK : warning LNK4044: unrecognized option '/D_ITERATOR_DEBUG_LEVEL=0'; ignored 

#define _ITERATOR_DEBUG_LEVEL 0 
> Nothing happens 

체크 된 반복자없이 프로젝트를 컴파일하는 올바른 구문이나 옵션은 무엇인가?

+2

/D가있다 컴파일러에 대한 옵션 및 당신은 링커에 준 –

답변

27

해결책을 찾았습니다.

프로젝트 페이지/구성 속성/C, C++/전 처리기/전 처리기 정의.

거기에 "_ITERATOR_DEBUG_LEVEL = 0"을 추가하십시오.

+0

나는 방금 위의 제안을 수행했습니다. 나는 2 개의 프로젝트를 가지고 있는데, 하나는 정적 라이브러리이고 다른 하나는 정적 라이브러리이다. 각각은 2008 Express 프로젝트로 시작되었습니다. 라이브러리는 2010 Express로 완전히 자동으로 변환되고, 다른 라이브러리는 2010 파일로 삽입됩니다. 나는 후자의 프로젝트가 2010 Express를 사용하여 디버그하에 빌드되도록 다양한 설정과 코드 변경을해야했습니다. exe 및 정적 라이브러리 모두에 대해 Release 아래의 전 처리기 매크로에 _ITERATOR_DEBUG_LEVEL = 0을 추가했습니다. 아무런 차이가 없었습니다. –

+0

user22636958의 코멘트, 오류 메시지가 읽는 방법을 명확히하기 위해, 그것은'_ITERATOR_DEBUG_LEVEL'을 추가하여 잘못된 프로젝트를 변경해야한다고 생각하게 만듭니다. 나는 다른 것을 바꿨고 그것은 나를 위해 일했다. :-) – kmort

3

마찬가지로 추가 정보 : 프로젝트 페이지/구성 속성/C, C++/처리기/처리기 정의 및 대상에 따라 다음 중 하나에 전처리 매크로 _ITERATOR_DEBUG_LEVEL을 설정

_ITERATOR_DEBUG_LEVEL = 0 // disabled (for release builds) 
_ITERATOR_DEBUG_LEVEL = 1 // enabled (if _SECURE_SCL is defined) 
_ITERATOR_DEBUG_LEVEL = 2 // enabled (for debug builds) 
관련 문제