2009-12-09 3 views
2

Visual Studio 2008을 사용하여 C/C++에서 작업합니다. 저는 개발자 런타임에 어떤 런타임 라이브러리가 사용되는지 염려하지 않습니다. 그러나 실행 파일이 배송 될 때 함께 사용되는 런타임 라이브러리가 함께 제공되어야합니다. 내가 맞습니까?어떤 런타임 라이브러리를 제공합니까?

그렇다면 실제로 어떤 공유 라이브러리가 사용되는지 식별 할 수 있습니까? 아니면 이것을 알 필요없이 우리가 출하 할 수있는 도서관이 있습니까?

답변

2

맞습니다. 응용 프로그램을 링크 한 버전과 일치하는 C 런타임 라이브러리 버전을 제공해야합니다. Visual Studio 2008로 컴파일하는 경우 Microsoft Visual C++ 2008 Redistributable Package을 사용하고 싶습니다. 다른 사람들이 언급했듯이 응용 프로그램의 매니페스트 파일을 검사하여 링크 된 C 런타임 라이브러리의 버전을 정확하게 확인할 수 있습니다.

배송 전에 항상 깨끗한 (즉, 개발자가 아닌) 가상 컴퓨터에 제품을 설치하고 Microsoft's Dependency Walker utility을 실행하여 응용 프로그램이 올바른 C 런타임 라이브러리를 사용하는지 확인하는 것이 가장 좋습니다.

+0

고마워요! Emerick –

+0

Visual Studio가 설치되어 있지 않은 테스트 컴퓨터가 있는데 매니페스트 및 종속성 워커에서 Microsoft.VC90.CRT 또는 특히 MSVCP90.dll, MSVCR90.dll에 종속되어 있음을 확인했습니다. –

+0

계속 ... 내 응용 프로그램은 Tomcat에서 실행되는 Java 응용 프로그램입니다. 그것은 apache-tomcat/bin/build/dll에있는 C++ dll을 사용합니다. 모든 MSVC *. * dll을이 폴더의 manifest 파일과 함께 복사 한 다음 나중에 bin 폴더에 복사 한 다음 apache-tomcat 폴더 아래에 복사합니다. 그러나 응용 프로그램이 실행될 때 종속성 오류가 계속 표시됩니다. 경로 환경 변수 설정도 도움이되지 않았습니다. 나는이 작업을 CRT dll을 작업 디렉토리에 붙여 넣으면 종속성을 제거해야한다고 생각했다. 뭔가 제안 할 수 있니? –

1

생성 된 manifest 파일을보고 제공해야하는 CRT 버전을 확인하십시오. 표시된 CRT 버전을 here으로 변경하면 가능하지만 권장하지 않는 것 같습니다.

+0

감사합니다. Andreas. 도움이되었다. –

2

dll 파일을 함께 배송해야합니다.

당신은 그 중 대부분을 추측 할 수 있고 나머지는 실행 파일의 의존성을 보여주는 "Dependency Walker"프로그램을 사용할 수 있습니다.

+0

MS가 side-by 어셈블리를 소개 한 이후 종속성 워커가 제대로 작동하지 않는다고 들었습니다. –

+0

side-side 어셈블리를보다 잘 처리하도록 업데이트되었습니다. 내 대답의 링크를 참조하십시오. –

+0

나는 여기 키워드가 "더 좋다"고 생각한다. 당신은 여전히 ​​정확한 정보를 얻는 것에 의존 할 수 없다. 매니페스트 파일을 사용하는 것이 좋습니다. –

관련 문제