[C++] Microsoft Visual Studio ~ C / C ++ 런타임 라이브러리 ~ 정적 / 동적 연결


Answers

여기 아무것도 없어 ... 실수를하면 차임을 부탁해.

1. "C / C ++ 런타임 라이브러리"와 "C / C ++ 표준 라이브러리"의 차이점이 있습니까?

예, 아니오. 때때로 사람들은 런타임 라이브러리를 사용하여 모든 것을 의미하고 표준 라이브러리를 모두 무시합니다 (Microsoft 도구 용). 그러나 기술적으로 런타임 라이브러리는 런타임에로드되므로 .lib (import lib) 및 .dll 쌍이 포함됩니다. 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/vstudio/abx4dbyh(v=vs.100).aspx

기술적으로 libc *는 표준 라이브러리이고 * crt는 런타임 라이브러리입니다.

2. "C / C ++ 런타임 라이브러리"라이브러리가 프로젝트에 정적으로 또는 동적으로 링크되어 있는지 어떻게 알 수 있습니까?

IDE를 사용하는 경우 (VS2010, 다른 것은 비슷합니다), 이것은 프로젝트 속성에 있습니다 :

-  configuration properties
        - c/c++
               - code generation
                      [Runtime Library]

3.이 라이브러리가 파일 시스템의 어디에 있는지 어떻게 알 수 있습니까?

lib 파일은 sdk의 lib 디렉토리 (나중에 windows sdk를 설치 한 경우) 또는 Visual C ++ 디렉토리에 있습니다.

4. "C / C ++ Runtime Library"가 프로젝트에 동적으로 링크되어있는 경우 ".dll"과 ".dll"이 파일 시스템에있는 위치를 어떻게 알 수 있습니까?

depends 도구를 사용하여 어떤 것들이 사용되는지 파악할 수 있습니다. http://www.dependencywalker.com/

DLL은 Windows 디렉토리의 어딘가에 있습니다. 그들은 그것들을 주변으로 이동 시키며 버전을 추적하기위한 명단과 물건이있는 펑키 한 장소에 있습니다. 나는 이것에 대해 너무 걱정하지 않을 것이다. 이 점에 대해 걱정해야한다면, 아마도 잘못된 것이있을 것입니다. 세부 사항 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa375365(v=vs.85).aspx http://en.wikipedia.org/wiki/Side-by-side_assembly

문제가되는 경우 재배포 가능 패키지를 설치 관리자와 함께 제공 할 수 있습니다. Visual Studio 재배포 가능 패키지와 Visual Studio SP1의 차이점

5. "C / C ++ 런타임 라이브러리"를 프로젝트에 정적으로 연결한다고 가정하면, 소스 코드에서 생성 된 실행 파일이 모든 Windows 플랫폼 (XP / Vista / Seven / ..., 32 비트)에서 작동하는지 확인할 수 있습니까? / 64 비트)?

예, 정적으로 링크하면 dll을 찾을 수 없다는 측면에서 더 안전합니다. 그러나 이로 인해 실행 파일이 커집니다. 행동 측면에서 다른 결과가 있습니다 ... 열거하기는 어렵지만, 차이점은 라이브러리가 dll과 exe에 컴파일되어 있다는 것입니다.

6. "C / C ++ 런타임 라이브러리"를 프로젝트에 동적으로 링크 할 때의 이점 / 단점은 무엇입니까?

왜 dll을 사용합니까?

- 크기. 더 작은 exe 크기는 모든 라이브러리 내용이 사용자 시스템에 이미 설치되어 있다고 가정되는 dll에 있기 때문에 때로는 그렇지 않습니다.

b - 런타임에 버그가있는 경우 Microsoft는 새 릴리스를 사용자에게 푸시 다운 할 수 있습니다. 당신은 그것을 다룰 필요가 없습니다. 당신이 정적으로 링크한다면, 당신은 사용자에게 새로운 exe를 밀어 넣어야 만합니다.

왜 dll을 사용하지 않는가?

- dll을 다루는 많은 문제. redist를 번들하는 것을 잊어 버리면 많은 문제가 나타날 수 있습니다.

b -로드 및 언로드 할 dll이 많으면 시작 및 종료 시간이 느려집니다.

아마 내가 생각하지 못한 다른 이유들 ...

7. "C / C ++ Runtime Libray"가 정적 또는 동적으로 프로젝트에 링크되어야합니까?

그것은 reallly 의존합니다. 나는 개인적으로 정적으로 링크 된 것을 선호한다. 나는 오른쪽 redist / dll / 등을 찾고 주위에 뒤죽박죽을 싫어.

Question

저는 Microsoft Visual Studio 사용자입니다. 내 질문은 "C / C ++ 런타임 라이브러리"에 관한 것입니다.

다음 코드가 포함 된 "main.cpp"소스 파일 ".cpp"로 "빈 프로젝트"를 만들었습니다.

#include <iostream>

int main(void)
{
    std::cout << "Hello World" << std::endl;
    return 0;
}

"iostream은 C ++ 프로그래밍 언어로 입 / 출력에 사용되는 헤더 파일로 C ++ 표준 라이브러리의 일부입니다."

  1. "C / C ++ 런타임 라이브러리"와 "C / C ++ 표준 라이브러리"간에 차이점이 있습니까?

  2. "C / C ++ 런타임 라이브러리"라이브러리가 프로젝트에 정적으로 또는 동적으로 링크되어 있는지 어떻게 알 수 있습니까?

  3. 이 라이브러리가 파일 시스템에서 어디에 있는지 어떻게 알 수 있습니까?

  4. "C / C ++ Runtime Library"가 프로젝트에 동적으로 링크되어있는 경우 ".dll"과 ".dll"이 파일 시스템에있는 위치를 어떻게 알 수 있습니까?

  5. "C / C ++ 런타임 라이브러리"를 프로젝트에 정적으로 연결한다고 가정하면 소스 코드에서 생성 된 실행 파일이 모든 Windows 플랫폼 (XP / Vista / Seven / ..., 32 비트 / 64)에서 작동하는지 확인할 수 있습니까? 비트)?

  6. "C / C ++ 런타임 라이브러리"를 프로젝트에 동적으로 링크 할 때의 이점 / 단점은 무엇입니까?

  7. "C / C ++ Runtime Libray"가 정적 또는 동적으로 프로젝트에 링크되어야합니까?

답변 해 주셔서 감사합니다.