2010-04-16 2 views

답변

4

[나는 지금 내 대답을 얻었다 생각]

동적 연결로 MFC DLL을 사용하는 경우 코드에는 사용자 응용 프로그램 또는 DLL과 함께 설치되는 Microsoft Foundation Library DLL (특히 코드에 필요한 버전)이 필요합니다. 그래서이 설치 패키지는

  • 모든 MFC DLL이
  • 이 설치 패키지 크기가 더 큰 이동도 사용자가 다운로드 할 걸릴 시간을 만들 수

    • 귀하의 응용 프로그램/DLL 및 지원 파일이 포함됩니다 의미 설치 설정.

      MFC를 정적 라이브러리로 연결하면 MFC DLL이 없어도 코드가 작동합니다. 그 이유는 코드에서 refererred 모든 MFC 라이브러리가 응용 프로그램이나 DLL에 링크 될 것이기 때문입니다. 즉, 귀하의 app/dll에 사용 된 MFC 라이브러리가 바이너리의 일부가된다는 의미입니다. 그러나 앱/dll은 조금 더 커집니다.

    +1

    정적 및 공유 라이브러리를 구별하는 데있어 Andy의 대답이 정확했지만 "정적 또는 공유 라이브러리로 MFC 사용"의 차이점을 묻는 질문과 관련되어 있으므로이 대답은 옳은 것으로 선택되었습니다. – AKN

    11

    정적 라이브러리 란 라이브러리에서 사용하는 코드가 실행 파일에 포함되어 있음을 의미합니다. 이 때문에 라이브러리를 배송하거나 최종 사용자가 자신의 컴퓨터에 보관하도록 요구하지 않아도됩니다. 그러나 이렇게하면 실행 파일의 크기가 커지고 해당 라이브러리 버전과 연결되므로 라이브러리 만 업데이트해야하는 경우 새 실행 파일을 제공해야합니다.

    공유 라이브러리는 코드를 실행 (런타임)해야 할 때 라이브러리를 호출하지만 시스템에 사용자가 설치해야합니다 (일반적으로 특정 버전 또는 최소 버전). 필요한 경우 응용 프로그램과 함께 필요한 라이브러리 버전을 배포 할 수도 있습니다.

    어떤 것이 더 좋습니까? 나는 잘 모릅니다. 나는 Windows C++ 또는 MFC 프로그래머가 아니므로 말할 수 없습니다. 필자의 리눅스 서버에서는 필자가 작성한 응용 프로그램이 일반적으로 서버 쪽이므로 공유 라이브러리를 사용합니다.

    그것은 당신의 응용 프로그램이 업데이트, 사용 배포하는 방법에 따라 달라집니다

    , 얼마나 자주 MFC 라이브러리 변경, 그것은 등 사용자의 PC에서 일반적으로 사용할 수있는 경우

    2

    또 다른 고려 사항은 응용 프로그램 서비스입니다.

    MSFT redis를 제공하고 라이브러리에 동적으로 연결 한 다음 나중에 MSFT에서 DLL의 중요한 결함을 "수정"하면 Windows Update를 통해 고객의 컴퓨터에 DLL을 패치합니다. 정적으로 링크하는 경우 모든 고객을 직접 업데이트해야합니다.

    물론 지정되지 않은 동작에 의존하므로 패치 된 DLL로 인해 응용 프로그램이 손상 될 우려가있는 경우 고객과 직접 서비스 및 테스트를 처리 할 수 ​​있습니다.

    관련 문제