2013-03-12 12 views
0

내 질문은, 당신의 C + + 프로그램을 컴파일하면, 왜 모든 하나의 exe 파일에 넣어 무엇입니까? 파일이 커질 수 있습니다. Dll 라이브러리를 사용하여 크기를 줄이거 나 다른 파일을 만들 수 있습니까? 난 그냥 별도의 파일을 사용하는 프로그램을 만드는 방법을 알고 싶어요.C++ 별도의 파일?

(EDIT) 나는 하나의 파일에 모든 것을 원하지 않습니다. 결국 컴퓨터가 파일을 처리하기에는 파일 크기가 커질 수 있습니다. 파일을 분리하는 방법이 있어야합니다. 자바에서와 마찬가지로, 모든 것이 클래스 파일에 있으며, 이는 더 쉽고 효율적으로 보입니다. FAT32와 같은 일부 드라이브는 4 기가 바이트보다 큰 파일을 가질 수 없기 때문에 더 많은 프로그램을 작성해야합니다. 포털이라는 게임을 보았는데 exe는 100KB이고 약 100 개의 dll 파일이 있습니다!

+0

왜 단일 실행 파일이 "너무 큽니다"? 리소스 (예 : 이미지/미디어)를 저장하지 않으면 현대적인 비 임베디드 시스템에서 수행하기가 매우 어렵습니다. 논리적 * 경계에 대한 동적 연결 사용 : 응용 프로그램의 큰 구성 요소 * 라이브러리, 기존 타사 라이브러리 , 플러그인 시스템의 모듈 등. –

+1

더 이상 저장소 나 램의 크기와 비교해 볼 때 exe 크기가 걱정되지 않습니다. 1990 년대에 나는 그런 것들에 대해 걱정했다. – drescherjm

+0

"컴퓨터가 처리하기에는 파일 크기가 너무 커질 수 있습니다."- 32 비트 플랫폼에서 2GB 실행 파일을 생성 할 가능성은 거의 없습니다. – drescherjm

답변

2

너무 큰 이유는 무엇입니까? 저장 공간 제한으로 인해 여러 파일로 분할해도 아무 것도 구입하지 않습니다. 플랫폼에있는 파일의 최대 크기가 일부 32 비트 플랫폼에서 2GB로 제한되는 등 오버 플로우가 발생하지 않는 경우가 아니라면 문제가 아닌 것으로 우려 할 수 있습니다.

당신은 등, 코드 크기보다는 실행 속도를 최적화하기 위해 최적화 설정을 설정, 다양한 플랫폼을 "제거", 컴파일러에 디버그 옵션을 해제하여 생성 된 실행 파일의 크기를 줄일 수 있습니다

+0

2MB 실행 파일을 만들거나 (외부/런타임 라이브러리를 정적으로 연결하지 않고) 2MB의 실행 파일을 만드는 것은 "어렵습니다". 컴파일러 출력은 공간 스펙트럼에 매우 밀집되어 있으며 작성하는 데 시간이 오래 걸립니다. 비디오를 녹화하거나 큰 이미지를 만들 수 있습니다. –

+0

-1 이것은 exe를 여러 파일로 분할하는 방법을 묻는 원래 질문에 대한 대답이 아닙니다. –

+4

질문은 exe 파일이 너무 크고 많은 dll의 IMO로 분할하는 방법에 대한 오해입니다. 실제로 클러스터 크기 반올림으로 인해로드하는 데 오래 걸리고 디스크 공간이 더 많이 생깁니다. – paulm

0

Windows에서 여러 파일로 exe를 분할하는 방법은 OP가 제안했듯이 dll을 사용하는 것입니다.

의견 작성자는 실제로 디스크 공간을 절약하고 메모리를 절약 할 수는 없지만 응용 프로그램을 여러 파일로 분할해야하는 다른 이유가 있습니다. 예를 들어 코드를 공유하거나 (여러 응용 프로그램에서 단일 dll을 사용할 수 있음) 응용 프로그램을 더 빨리로드 할 수 있습니다 (실제로 필요한 경우 dll 만로드).

3

질문에 대답하려면 예. 원할 경우 프로그램을 별도의 DLL 파일로 분리 할 수 ​​있습니다.

일부 개발자는 유틸리티 함수를 참조로 다른 프로젝트에 포함될 수있는 별도의 공통 DLL 파일로 컴파일하는 것을 보았습니다. 이렇게하면 객체와 메서드를 호출 할 수 있습니다.

뒤늦은 시야에서 컴파일 된 코드는 비교적 작습니다. 이진 데이터는 비디오, 이미지, 모델, 사운드 등 대부분의 공간을 가장 많이 차지합니다. 더 작은 프로그램이 이러한 리소스를 실행 파일에 직접 패키징하는 것이 일반적 일지라도 일반적으로 많은 명백한 이유 때문에 좋은 생각이 아닙니다. .

마지막으로 대형 실행 파일은 오늘날의 기술에 큰 문제가되지 않습니다. 더 작은 프로그램을 위해, 나는 그것을 땀을 흘리지 않을 것이다. 프로젝트가 더 커질수록 디자인 개발에 관한 것입니다.