2009-04-15 5 views
3

우리는 둘 이상의 클라이언트 응용 프로그램에서 사용하는 DLL 형식의 핵심 라이브러리를 가지고 있습니다. 다소 부풀어 오르고 일부 응용 프로그램은이 DLL이 제공하는 기능 중 아주 작은 부분 만 필요합니다. 이제 우리는이 거대한 짐승을 더 작은 구성 요소로 나누는 것을보고 있습니다.유틸리티 DLL을 C++의 더 작은 구성 요소로 분할

내 질문은 : 누구든지이 부풀린 DLL을 몇 가지 상호 작용이 있지만 반드시 다른 모든 모듈을 필요로하지 않는 모듈 집합으로 나누는 경로를 권장 할 수 있습니까? 내가 그들을 보는 바와 같이 여기

이 옵션을하지만 누군가가 다른 가능성 제공 할 수 바라고 있어요 :

  1. 을에 "핵심"DLL 코어 및 가능한 다른 위성 DLL을 사용하는 여러 "위성"DLL을 만들기 .
  2. 부풀린 DLL의 내용을 메인 DLL이 동일한 기능을 유지하기 위해 사용하는 정적 라이브러리로 세분화하지만 비 대한 버전을 사용하지 않으려는 응용 프로그램은 자신이 필요로하는 정적 라이브러리를 어셈블 할 수 있습니다. 앱 자체

나는 언급하는 것을 주저했지만 나는이 응용 프로그램이 MFC를 사용한다는 점에 유의하는 것이 중요하다고 생각합니다.

의견을 보내 주셔서 감사합니다.

답변

1

모든 세부 사항을 필요없이 도와 조금 어렵 그러나 여기에서 나는 상황에서 어떻게 할 것인지입니다

  • 당신이 해제 whate3ver의 정적 및 DLL 두 버전 모두 제공 - MT 및 단일 스레드에 대한합니다.
  • 종속성 계층이없는 합리적인 세분화를 제공하기 위해 항목을 그룹화해야하는 이질적인 클라이언트로부터 수집을 시도하십시오.

"코어"모듈은 좋은 생각처럼 들리며, 너무 많은 의존성 수준이 없는지 확인하십시오. 단순하게 유지하고 싶을 수도 있습니다.

실습 후에 큰 dll이 실제로 적당하다는 것을 알 수 있습니다.

또 다른 고려 사항은 여러 DLL과 정적 라이브러리와 DLL을 유지하면 유지 관리의 복잡성이 크게 증가한다는 것입니다.

매번 한 번에 모두 풀어 주거나 ​​믹스 앤 매치가 될 예정입니까? 여기에주의하십시오 - 테스트 문제를 만들 수 있다는 것을 알고 있습니다.

아무도 DLL의 크기에 관해 불평하지 않으면 그대로 두는 것이 좋습니다.

+0

나는 당신의 마지막 요점에 동의하고 싶습니다. 앱의 맞춤 버전을 원하는 특정 고객이 있지만 적게는 있지만 훨씬 적습니다. 나는 그것을 추구하면서 엄청난 고난을 겪고 있다고 말하고 싶다. – Karim

2

다소 큰 C 모듈을 작은 모듈로 분할하는 것과 관련하여 약간의 질문과 관련이 있습니다.

How do you introduce unit testing into a large, legacy (C/C++) codebase?

귀하의 질문에 더 모듈 식 시스템에 코드의 일부 큰 덩어리를 깨는의 큰 질문을해야 할 것 같다. 위의 링크는 꼭 읽어 보시기 바랍니다.

+0

확실히 그 중 일부이지만 의존성의 복잡함과 정적 라이브러리 대 DLL 환경에서 이것을 유지하는 것이 얼마나 어려울 지 또한해야 할 일이 많습니다.많은 알려지지 않은 것들이 있으며 나는 누군가가 나를 인도 할 수 있기를 희망했다. – Karim

관련 문제