2014-04-09 4 views
3

나는 windowsv8에서 agains msvcrt.dll을 연결하고 memmove_s을 사용하는 작은 도구를 개발 중입니다. Windows XP 시스템에 내 도구를 배포하고 싶습니다. msvcrt의 내 버전은 7.0.30xx이지만 XP에서는 7.0.2600입니다. 이전 버전에는 memmove_s이 포함되어 있지 않으므로 시작시 프로그램이 충돌합니다.Windows XP에서 MSVCRT.dll 업데이트

Microsoft Visual C++ 재배포 가능 패키지 (2010 년과 2012 년 모두) 설치를 시도했지만 msvcrt.dll이 손상되지 않은 것으로 보입니다.

+0

응용 프로그램이/MT로 컴파일되어 있습니까? http://stackoverflow.com/questions/757418/should-i-compile-with-md-or-mt – Matt

+0

@Mac MinGW를 사용하고 있습니다. 나는 libgcc가 컴파일되는 방법을 모른다. –

+0

이 문제는 응용 프로그램이 정적 런타임을 링크 할 때 일반적으로 발생합니다. 컴파일러 옵션을 확인해야합니다. – Matt

답변

2

msvcrt.dll은 Windows 소유의 개인 시스템 DLL입니다. 당신은 그것을 만지거나 그것과 연결해서는 안됩니다.

Visual Studio와 함께 제공되는 일반 msvcrXXX.dll (예 : msvcr100.dll)을 사용해야합니다 (예 : CRT를 배포하지 않으려면 CRT와 정적 연결을 사용하십시오. DLL을 도구와 별도로).

MSDN CRT documentation에서이 주 고려 :

MSVCRT.DLL과 msvcr110.dll의 차이점은 무엇입니까?

msvcrt.dll은 이제 "알려진 DLL"입니다. 즉, msvcrt.dll은 Windows에서 소유하고 빌드 한 시스템 구성 요소임을 의미합니다. 나중에 시스템 수준의 구성 요소에서만 사용하기위한 것입니다.

+2

종속성 중 일부 (Qt 및 OpenSSL 내가 생각하기에) 또한 msvcrt에 대한 링크. 운영 체제의 MSVCRT.dll을 업그레이드 할 수있는 시스템 업데이트 또는 서비스 팩이 있습니까? –