2014-05-16 2 views
1

C 프로그램을 WinXP 및 Win7과 호환되는 실행 파일로 컴파일하려고합니다. 코드는 가능한 한 컴팩트해야하므로 DLL을 사용하고 싶습니다. Visual Studio Express 2012 update4는 WinXP 용 코드를 생성 할 수 있지만 후자는 Win7에서 작동하지 않습니다. Win7에서 실행할 때 "MSVCR110.dll이 없기 때문에 프로그램을 실행할 수 없습니다 ..."C 코드를 WinXP 및 Win7과 호환되는 단일 실행 파일로 컴파일

누구든지이 문제를 해결할 수 있습니까? 미리 감사드립니다.

+0

각 운영 체제마다 다른 실행 파일을 갖는 것이 실제로 문제가됩니까? – Shahbaz

+0

빠른 응답을 보내 주셔서 감사합니다. 불행히도 그것은 문제입니다 .... – user3644884

+0

이 링크가 도움이됩니까? https://software.intel.com/en-us/articles/linking-applications-using-visual-studio-2012-to-run-on-windows-xp – MicroVirus

답변

4

VS2012에서 컴파일 한 프로그램은 XP와 Windows 7에서 모두 작동해야합니다. 문제는 단순히 Windows 7 컴퓨터에 필요한 런타임이 배포되어 있지 않다는 것입니다. 이것이 동적 런타임에 연결하기위한 전제 조건입니다. 프로그램을 실행하는 시스템에 런타임을 전개해야합니다.

예를 들어 VS2012 재배포 가능 패키지를 사용하여 런타임을 배포 한 후에는 코드가 실행되는 것을 발견해야합니다. Windows 7 시스템뿐만 아니라 모든 시스템에서이 작업을 수행해야합니다. Windows XP 시스템에서 그렇게 할 필요가 없다는 사실은 다른 응용 프로그램이 이미 런타임을 배포했음을 의미합니다. XP 컴퓨터가 개발 컴퓨터이고 Visual Studio를 설치할 때 런타임이 배포되었을 가능성이 큽니다.

재배포 가능 패키지를 설치하는 대신 런타임 파일 인 MSVCR110.dll을 실행 파일이있는 디렉터리에 둘 수 있습니다. 이 주제에 대한 설명서를 읽으시기 바랍니다 : Redistributing Visual C++ Files.

배포를 가능한 한 작고 간단하게 만들고 싶다면 동적 런타임에 연결하면 달성 할 수 없습니다. 정적 연결은 가장 작고 간단한 배포로 이어집니다. 그것이 내가 추천하는 것은 아닙니다. 여러 가지 이유로 동적 런타임이 선호됩니다.

+0

+1. * 대부분의 컴팩트 전개가 가능하려면 C 런타임 라이브러리에 전혀 링크하지 마십시오. 물론 그렇게하기가 쉽지 않습니다. 시작하기 위해서는 Windows API 만 사용하여 모든 C 표준 라이브러리 호출을 피하는 코드가 필요합니다. 이는 길이가 기존 코드를 처리하는 경우에는 어색 할 수 있습니다. 더 복잡한 문제를 해결하기 위해 C 런타임 라이브러리에 실제로 구현 된 Windows API 부분 (예 : "안전한 문자열 함수")이 있습니다. 아직도, 몇몇 전문화 한 목적을 위해, 이것은 분별있는 선택이다. –

관련 문제