2014-04-28 5 views
3

고객 사이트에서 문제가 발생했습니다. 고객은 2011 년 2 월 19 일자 VS2010 런타임 및 버전 10.0.40219.1 을 사용하여 응용 프로그램을 작성했습니다. 고객의 응용 프로그램은 VS2010 런타임을 사용하지만 약간 이전 버전 인 DLL을 사용합니다.R6030 CRT 초기화되지 않았습니다.

VC Runtime re-distributable의 설치를 건너 뛸 수있는 out installer에서 옵션을 사용할 수 있습니다. 여기서 고객은 이미 런타임이 설치되어 있으므로 건너 뛰었을 것입니다.

고객의 앱이 먼저 시작한 다음 DLL이로드되고 문제가없는 경우 문제가 발생합니다. 하지만 다른 경우에는 고객의 앱이 msvcr100.dll 만로드하고 msvcp100.dll을로드하지 않는 경우 그리고 나서 DLL이로드 될 때 "R6030 CRT 초기화되지 않음"이 표시됩니다.

런타임과 응용 프로그램이 정확히 같은 버전으로 컴파일되면 비 호환성 문제가 발생합니까?

+1

이 문제가 해결되었다, 나는이 문제가 발생하면 메모리 덤프를 생성 한 일, 우리는 응용 프로그램의 DLL 중 하나가에서에서 LoadLibrary를하고있는 것을 발견의 DllMain. 이 문제가 해결되었을 때 문제가 해결되었으므로 결론은 VC 런타임의 로컬 설치라고 할 때 Dllmain – user2101801

답변

0

예! 프로그램을 항상 함께 구축 할 CRT와 함께 제공하는 것이 좋습니다.

하지만 이것에 대해 궁금합니다. 내부적으로 새로운 DLL은 이전 빌드와 이진 호환됩니다. 따라서 이전 버전으로 빌드하기 때문에 최신 버전은 응용 프로그램을 중단해서는 안됩니다.

VC 런타임에 로컬 설치를 사용할 때 항상이 문제를 피하십시오.

+0

에서 LoadLibrary를 호출하지 않습니다. Microsoft.VC100.CRT, ATL, MFC 등의 폴더와 유사한 폴더를 복사 할 것을 제안합니까? 내 DLL이 고객 위치에있는 것과 같은 폴더에 있습니다. 내 것이 dll이므로이 현재 디렉토리를 먼저 참조하고 Microsoft.VC100.CRT와 같은 폴더를 조사해야한다는 것을 어떻게 알 수 있습니까? – user2101801

+0

이것은 프로세스 레벨에서만 작동합니다. 이 프로세스는 DLL의 검색 경로를 제어합니다. – xMRi

+0

누구나이 솔루션을 제안 할 수 있습니다. 고객이 사용하고있는 것과 동일한 버전의 DLL을 다시 작성한 후에도이 문제는 해결되지 않습니다. MSVCR100.dll이 MSVCP100.dll을로드하지 않는 경우가 있습니다. – user2101801

0

원인을 정확히 알 수는 없지만 일부 컴퓨터에서는 Microsoft IME 2010을 Microsoft 표준 IME로 변경하면 R6030 런타임 오류를 해결할 수 있습니다. Microsoft office 2010과 관련이있을 수 있습니다. 또한 windows - start - msconfig - service 탭에서 "image protect service"를 선택 취소하십시오.

다음 스크린 샷을 참조하십시오. 죄송합니다. 스크린 샷의 언어는 한국어입니다. 이 덤프를 분석 할 때

Microsoft IME change

Image Protect Service

관련 문제