Visual C++ 컴파일러로 컴파일 된 코드가 스트레이트 C++ 인 경우 왜 재배포 가능 패키지가 필요합니까? 이로 인해 코드 플랫폼이 종속적입니까? 재배포 가능 패키지와 함께 Visual C++ 컴파일러를 사용하면 g ++와 함께 다른 IDE를 사용하는 것보다 이점이 있습니까?왜 Visual C++ 재배포 가능 패키지가 필요합니까?
답변
코드는 플랫폼에 종속되지 않으므로 실행 파일이 대상입니다. 그것은 DLL의 재배포 가능 파일에 포함되어있는 표준 라이브러리 구현을 사용하여 MS 라이브러리와 연결됩니다.
IIRC 모든 항목을 정적으로 링크 할 수있는 옵션이 있어야 재배포 할 필요는 없지만 결과적으로 플랫폼에 따라 달라질 수 있습니다. 예를 들어 UNIX에서 Windows 바이너리를 실행할 수 없습니다 시스템 (와인 없이는 최소한).
메모리 관리 프로그램, 표준 I/O 라이브러리 및 개별 응용 프로그램에 별도의 복사본과 같은 메모리 관리 프로그램을 포함시킬 수 있으며,이를 관리하고 부풀리기를 늘리거나 단일 실행 파일을 설치하지 않아도됩니다. 필요한 모든 응용 프로그램에 대해 한 번만 모든 코드를 포함하는 시간. –
@DavidSchwartz 예 ... 그리고 나는 모든 Windows 설치에서 기본적으로 포함되어 있다고 생각합니다. 맞습니까? – littleadv
Windows 설치 및 실행 시간에 따라 다릅니다. 예를 들어 (아직 다른 사람이 설치 한 경우) Windows Vista SP1을 새로 설치하면 VS2010 런타임이 없습니다. –
"Straight C++"와 같은 것은 없습니다. 코드 내에 여기저기서 호출하는 라이브러리 함수가 항상있을 것이고, 매우 조심스럽지 않더라도 컴파일러가 내 보낸 코드만으로 호출해야하는 함수가있을 것입니다. 예를 들어 다음과 같은 루프가있는 경우 :
컴파일러는 단순히 메모리를 복사하는 코드로 바꿉니다. 그리고 속도 대신에 더 작은 크기로 컴파일한다면, 이것은 memmove()와 매우 유사한 함수를 호출 할 것입니다.
또한 직접적인 x86 동등한 명령어가없는 부동 소수점 연산이있을 수 있습니다. 이것들은 함수 호출로 구현 될 것이다. 그리고 그 목록은 계속됩니다.
다른 플랫폼에서는 해당 플랫폼의 컴파일러가 동일한 코드를 컴파일하여 해당 플랫폼의 C++ 런타임과 함께 사용하기 때문에 코드 플랫폼이 종속적 인 것은 아닙니다.
다행히도 C++ 런타임은 응용 프로그램과 별개의 엔터티 일 필요는 없습니다. 컴파일러 및 링커 옵션을 확인하십시오. 당신은 둘 모두를 포함하는 하나의 실행 파일을 생성 할 수 있어야합니다. g ++가 별도의 런타임을 필요로하지 않는다는 것을 알게 되었다면, 그것은 기본적으로 정확하게 수행하기 때문입니다. 사용되는
는 C++ 재배포은 IDE에 따라 다릅니다 ("IDE"나는 말을하지만 컴파일러 정말 특정의, 아직 가지를 따라 이동할 때 IDE & 컴파일러가 모두 새 버전을 할당하고있다.)
해당 IDE에만 적용되지만 Windows 운영 체제에는 적용되지 않습니다. 그래서 이전 버전과 호환 될 수 있어야합니다. (분명히 새로운 API를 사용하지 않는다고 가정하십시오.) 사실, 이것은 이전 버전과 호환되므로 (여러분이 생각하는 것처럼 다른 방식으로는 안됩니다.) 이렇게하면 최신 API를 사용할 수 있습니다. 가장 뛰어난 IDE 버전 (10, 11, 12 ...)으로 Win2k에서 코드를 실행하십시오!
이제 각 주 버전에서 다시 컴파일 할 것으로 예상되는 Linux와는 많이 다릅니다. 대부분의 유닉스 시스템은 그런 식으로 작동 할 것이다.
C++을 정적으로 컴파일하여 이러한 재배포 가능 패키지를 피할 수있는 방법을 모르겠습니다. 가능한 경우 .exe를 매우 크게 만들지 만 가능할 수도 있습니다.
항상 Visual C++ 6 복사본을 XP 가상 컴퓨터에 설치합니다 (Win 6/7/8에서는 제대로 작동하지 않습니다). 때로는 필자에게 글을 쓰거나, 또는 한 번만 실행하거나 하나의 exe로 컴파일하는 유틸리티 앱을 작성하라는 요청을받는 경우도 있습니다.나는 std lib 만 사용하여 작성된 간단한 프로그램을 다른 누군가에게 보내면 아프다. 일부 누락 된 dll이나 재배포 가능 패키지로 인해 작동하지 않는다고 말해 준다.
프로젝트 속성에서 C/C++, 코드 생성은 릴리스 빌드의/MT에 런타임 라이브러리를 설정합니다.
(social.msdn에이 질문에 대답 마이크 덴마크에 크레딧 : https://social.msdn.microsoft.com/Forums/vstudio/en-US/09afd4be-7a15-4772-98c1-a0464a96cd7f/how-to-static-linkage-in-visual-c-express-edition-2010?forum=vcgeneral&prof=required)
- 1. Visual C++ 재배포 가능 재배포
- 2. SQL Compact 4.0의 개인 배포에는 C++ 재배포 가능 패키지가 필요합니까?
- 3. MinGW에서 Qt를 배포하려면 VC++ 재배포 가능 패키지가 필요합니까?
- 4. Visual C++ 2008 SP1 재배포 가능 패키지가 설치되어 있는지 확인하십시오?
- 5. Visual C++ 재배포 가능 항목을 테스트하려면 어떻게합니까?
- 6. 2.0 SP2 .NET 재배포 가능 패키지가 있습니까?
- 7. visual C++ 2010 재배포 가능 파일
- 8. Visual Studio 재배포 가능 패키지와 Visual Studio SP1의 차이점
- 9. Microsoft 재배포 가능 패키지
- 10. Visual Studio 재배포 가능 패키지 x64는 64 비트 응용 프로그램을 실행하는 데 필요합니까?
- 11. Visual Studio 2008 SP1 재배포 가능
- 12. 부트 스트 래퍼가있는 Wix Visual C++ 재배포 가능 파일
- 13. Burn을 사용하여 WiX에서 Visual C++ 재배포 가능 패키지를 배포하는 방법
- 14. VS 2008의 Visual C++ 재배포 가능 설치 프로그램은 어디에 있습니까?
- 15. 설치 중 - Visual C++ 2003 재배포 가능 패키지 - 오류 발생
- 16. 사용자 별 Visual C++ 재배포 가능 설치가있는 WiX Installer
- 17. Microsoft Visual C 재배포 가능 패키지와 런타임 패키지의 차이점은 무엇입니까?
- 18. VC++에서 개발 된 프로그램의 경우 대상 컴퓨터에 .NET Framework가 설치되어 있어야하며 언제 MS VC++ 재배포 가능 패키지가 필요합니까?
- 19. Microsoft Visual C++ 2008 재배포 가능 패키지를 자유롭게 재배포 할 수 있습니까
- 20. JRE 재배포 가능 라이센스
- 21. 재배포 가능 resgen
- 22. C++ 2008 재배포 가능 패키지의 재배포가 금지되어 있습니까?
- 23. WIX가 포함 된 C++ 재배포 가능 패키지
- 24. 재배포 가능 컴파일러 - MS Visual Studio 용 DLL
- 25. 특정 Visual C++ 재배포 가능 파일 버전을 대상으로하는 Visual C++ 프로젝트를 빌드하는 방법
- 26. ATLComTime.h는 재배포 가능 항목의 일부입니까?
- 27. VC++ 재배포 가능 ATL SP1 (설치 시작 전) 감지
- 28. 런타임 재배포 가능 패키지가없는 C++ 바이너리 실행 (Server2k3, XPSP3)
- 29. 다른 컴파일러 ... 모두를 위해 재배포 가능 라이브러리를 설치해야합니까?
- 30. Microsoft 빌드 엔진 재배포 가능 항목
컴파일 된 코드는 * 항상 * 플랫폼에 의존. 컴파일 된 플랫폼에서만 작동합니다. –
필요하지 않습니다. 대신 설치 프로젝트를 만들어야합니다. 또는/MD 대신/MT를 사용하여 컴파일하면 전혀 필요하지 않습니다. 그러나 DLL을 사용할 때 위험합니다. –