Visual Studio 프로젝트에서 C 런타임 라이브러리에 정적으로 또는 동적으로 링크해야하는지 여부에 대한 인수를 읽었으며 여전히 생각할 부분이 전적으로 충분하지 않습니다.정적 또는 동적으로 Visual Studio C 런타임에 연결해야합니까?
내 프로젝트는 제 3 자 라이브러리 (Python, HDF5, Trilinos 및 Microsoft MPI)를 가져옵니다. 각 라이브러리는 최종 실행 파일과 동일한 런타임 라이브러리로 빌드해야합니다. 그렇지 않으면 함께 링크 할 수 없습니다. 정적으로 링크 할 때, 이들 라이브러리 각각은 C 런타임의 사본을 포함합니다. 최종 실행 파일에는 런타임의 여러 복사본이 포함되어 있으므로 어느 것도 서로 상호 작용할 수 없으므로 문제가 발생할 수 있습니다. 그러나 동일한 기호가 여러 개 정의 된 경우 링커가 불평하지 않겠습니까?
저는 "DLL Hell"을 피하고 싶지만 런타임의 여러 복사본에 정적으로 링크 할 때 발생할 수있는 교활한 오류에 대해 걱정하고 있습니다. 내가 잘못 읽은거야?
또한 Visual Studio 2005를 사용하고 있으며 서비스 팩 1 런타임은 역 호환되지 않는다고 읽었습니다. 이것은 SP1이없는 응용 프로그램이 SP1 DLL이있는 컴퓨터에서 실행되지 않는다는 것을 의미합니까 (예 : msvcr80.dll)?
이것은 내가 찾고 있던 대답이다. 사적인 어셈블리가 내 문제에 대한 가장 안전한 해결책 인 것처럼 보입니다. 앱이 고정 된 디렉토리 구조로 배포된다는 점에서 Mac 번들을 생각 나게합니다. 감사! – user76293
그러나 개인 어셈블리는 Windows Update에 의해 패치되지 않습니다. 맞습니까? 따라서 런타임 라이브러리 복사본을 최신 상태로 유지해야합니다. 또한 http://blogs.msdn.com/larryosterman/archive/2004/04/29/123090.aspx –
내 '응용 프로그램'(내 응용 프로그램) 폴더에 32 비트 및 64 비트 응용 프로그램을 지원합니다. 단순히 어셈블리 폴더 이름에 x32 또는 x64와 같은 것을 추가 할 수 없습니다. 즉, 32 비트 또는 64 비트 응용 프로그램 만있는 경우 전용 어셈블리 만 사용할 수 있습니다. – Patrick