C++ 클래스가 있습니다. 지금 쓰고 있습니다. 제가 작업중인 프로젝트 전체에 사용됩니다. 정적 라이브러리에 넣거나 dll에서 클래스를 내보낼 수있는 옵션이 있습니다. 각 접근법에 대한 이점/벌칙은 무엇입니까? 내가 생각할 수있는 유일한 것은 내가 정말로 신경 쓰지 않는 컴파일 된 코드 크기이다. 감사! DLL을의dll 대 정적 라이브러리를 반출하는 이점
2
A
답변
9
장점 :
- 이 기능에 접속 여러 다른 exe 인의를 가질 수 있습니다, 그래서 당신은 전반적으로 작은 프로젝트 크기가됩니다.
- 전체 exe 파일을 교체하지 않고도 구성 요소를 동적으로 업데이트 할 수 있습니다. 그래도 인터페이스가 동일하게 유지되도록주의하십시오.
- 때때로 LGPL의 경우와 마찬가지로 DLL을 사용해야합니다.
- C#, Python 또는 DLL에 연결된 다른 언어로 일부 구성 요소를 가질 수 있습니다.
- 다른 버전의 DLL에서 작동하는 DLL을 사용하는 프로그램을 빌드 할 수 있습니다. 예를 들어 특정 운영 체제 DLL에 함수가 있는지 확인하고 DLL이있을 경우에만 호출하고, 그렇지 않으면 다른 처리를 수행 할 수 있습니다. 정적 라이브러리의
장점 : 당신은 단지 작은 응용 프로그램이있는 경우
- 당신은 DLL이 방법
- 적은 배포하는 문제를 verisoning 가질 수 없습니다, 당신은 전체 설치 프로그램을 강요하지 않습니다.
- DLL 인 경우 액세스 할 수있는 코드에 묶이는 다른 사용자가 걱정할 필요가 없습니다.
- 내보내기 및 가져 오기에 대해 걱정할 필요가 없으므로 정적 라이브러리를 쉽게 개발할 수 있습니다.
- 메모리 관리가 더 쉽습니다.
0
Windows에서 동적 라이브러리의 가장 중요하고 종종 언급되지 않은 기능 중 하나는 DLL에 자체 힙이 있다는 것입니다. 이는 귀하의 관점에 따라 장점 또는 단점이 될 수 있지만이를 알고 있어야합니다. 예를 들어, DLL의 전역 변수는 사실상의 프로세스 간 통신이나 모호한 실행 시간 오류의 원인이 될 수있는 해당 라이브러리에 연결된 모든 프로세스간에 공유됩니다.
+1
100 % 정확하지 않습니다. DLL의 전역 변수는 프로세스마다 인스턴스화됩니다. pragma/linker 트릭을 사용하면 시스템 전역을 만들 수 있지만 기본값은 아닙니다. 그것은 Win3.1에서 William이 말했듯이 Win95/NT에서 바뀌 었습니다. – jmucchiello
관련 문제
- 1. 노드 모듈 - 변수를 반출하는 것과 반출하는 함수를 반출하는 모듈?
- 2. 정적 라이브러리로 DLL 빌드하기
- 3. 정적 라이브러리를 DLL에 연결
- 4. 독립적으로 정적 라이브러리를 빌드하면
- 5. vb.net에서 dll 라이브러리를 구성하는 방법
- 6. 추상 클래스 대 정규 클래스 사용의 이점
- 7. 부스트 - "정적"대 "공유"라이브러리
- 8. 타사 정적 라이브러리를 다른 정적 라이브러리에 연결
- 9. 정규 DLL : 우리는 비주얼 스튜디오를 사용하여 DLL 만들 때 MFC 대 MFC 공유 정적
- 10. 정적 라이브러리를 추가 할 수 없습니다.
- 11. DLL 프로젝트의 정적 링크 기능
- 12. 정적 변수 대 멤버
- 13. 정적 대 글로벌
- 14. 정적 대 멤버 변수
- 15. SQLite : sqlite3.dll 대 System.Data.SQLite.dll?
- 16. 디버그 대 릴리스 dll 크기
- 17. EXE가 잠겨 있습니까 (DLL 대)?
- 18. 정적 라이브러리를 배포하는 방법은 무엇입니까?
- 19. 정적 클래스 라이브러리를 사용하는 NServiceBus
- 20. 정적 라이브러리를 사용할 수 없습니다.
- 21. 공유 라이브러리를 정적 라이브러리로 변환
- 22. Visual C++ 2008에서 정적 라이브러리를 연결하는 방법?
- 23. 비 정적 대 정적 함수 및 변수
- 24. IronScheme에서 CLR DLL 라이브러리를 사용하는 방법
- 25. 정적 라이브러리와 동적 DLL 모두로 C + + 라이브러리 컴파일 VS
- 26. WPF - 동적 대 정적 리소스
- 27. 정적 캐스트 대 동적 캐스트
- 28. C++ 싱글 대 정적 메소드
- 29. 싱글 톤 대 정적 변수
- 30. 동적 UI 대 정적 UI
좋은 이유는 버전 관리를 생각하지 않았기 때문입니다. – Steve
DLL 버전 문제를 피하는 한 가지 방법은 버전 번호를 DLL 파일 이름에 추가하는 것입니다 (예 : 'mydll300.dll'과 같은 접미어). –
BTW, 답변을 계속 수정 해 주셔서 감사합니다. – Steve