2010-12-03 4 views
2

동료가 소프트웨어를 개발할 때 복사하고 사용자 지정하는 VS .NET 2003 프로젝트 템플릿이 있습니다.Visual Studio .NET 2003 - libcmt 대 libcmtd의 특정 라이브러리 무시

릴리스 및 디버그 빌드 모두에 대해 libcmt.lib을 갖도록 IgnoreSpecificLibrary 속성을 설정하기 위해 템플릿이 잠시 동안 변경된 것 같습니다 (예 : 릴리스 및 디버그의 경우 빌드에서 링커의 libcmt.lib를 무시해야합니다).

일부 런타임 문제를 일으킨 것처럼 보이는 libcmtd.lib (프로젝트 .map 파일을 통해 보았을 때 분명 함)에서 릴리스 빌드가 빌드 된 이후 일부 프로젝트가 빌드되었습니다 (즉, 대화 창이 창이 깜박임). 중단 점이 설정된 것처럼).

libcmt.lib를 제외하도록 IgnoreSpecificLibrary를 설정하면 libcmtd.lib에 대한 프로젝트 링크가 자동으로 설정됩니까?

이상한 점은 libcmt.lib에 대한 템플릿 (잘못된 설정 포함)을 만드는 것이지만 사용자 정의 된 프로젝트 중 일부는 libcmtd.lib와 링크하는 반면에 이상한 점입니다.

아이디어가 있으십니까?

답변

2

이 무슨 일이 있었는지입니다 가득 채워지지 않은 그런 다음 링커가 라이브러리 목록을 통해 불완전한 기호 인 을 해결합니다. libcmt.lib를 무시했기 때문에 서드 파티 라이브러리 은 해결되지 않은 심볼을 남기거나 추가했으며, 이 디버그로 컴파일 되었기 때문에 licmtd.lib (그리고 다른 libs도 가능)에서이를 해결하기 위해 링커 요청 을 포함합니다. 선택권.

당신이 그 기호를 LIBCMT.LIB 무시하지 않았다면

가능성이 가장 높은 LIBCMT.LIB에 의해 해결 될 것이며, libcmtd.lib에서 물건을 끌어 할 필요가 없었다 (그것이 바라 보았다 될 수도 불구하고 서로를 해결하기 위해 여전히 채워지지 않은 기호)

igmore libcmtd.lib도 시도 할 수 있습니다. 지금 unresolvd 외관을 얻는다면 libcmt.dll을 무시하는 것이 probebly 좋은 아이디어가 아닙니다.

2

동적 버전 인 msvcrt.lib와 충돌하기 때문에 많은 프로젝트에서 libcmt.lib를 무시합니다.

링커를 컴파일하는 것은 당신의 객체 파일을 소요하고 다른 한 심볼 테이블, 중 생성 한 후 symol 요청을 : 프로젝트는 다음 msvcrt.lib 컴파일 할 링커에 LIBCMT 무시

+0

여기서 문제는 libcmt.lib가 아닌 libcmdt.lib로 컴파일된다는 것입니다. 이것이 내 혼란이있는 곳입니다. libcmt.lib를 무시한다고하면 libcmtd.lib가 제거 프로세스를 통해 링크됩니까? – tefd

+0

그 후 개발자가 다른 라이브러리의 디버그 버전 (다시 릴리스 구성)과 연결되어 있다는 것을 알았습니다. 이것이 디버그 libcmtd를 잡아 당기는 방아쇠가 될 것입니까? – tefd

+0

@tefd, libcmtd를 가져 오는 라이브러리의 디버그 버전에 대해 정확합니다. 릴리스 빌드를 얻을 수 있으면 문제를 해결해야합니다. 그렇지 않으면 무시 무시한 해킹이 발생합니다. – patrickvacek

관련 문제