2011-07-03 6 views
7

MS Visual Studio Express 2010에서 처음으로 'demoscene'응용 프로그램을 작성하려고합니다. 갑자기 16 진수가 16kb에서 100kb로 확장되었고, 크기에 최적화 된 버전. 내 타겟 크기는 64k입니다. 어떻게 든 알아낼 바이너리를 "탐색"할 수있는 방법이 있습니까, 어떤 방법으로 많은 공간을 소비합니까? 그리고 다시 작성해야합니까? 내 바이너리가 무엇을 구성하는지 알고 싶습니다.어떤 방법으로 'exe'크기를 늘리는 지 알아내는 방법

웹에서 찾은 바에 따르면 VS2010은 demoscenes 용으로 가장 적합한 컴파일러는 아니지만 내 .exe 파일 내부에서 일어나는 일을 이해하고 싶습니다.

답변

5

MSVC에서지도 파일을 생성해야한다고 생각합니다. 이 파일은 실행 파일에있는 대부분의 다른 함수의 주소를 알려주는 파일입니다. 연속적인 주소의 차이는 함수에 필요한 공간의 크기를 알려줍니다. 맵 파일을 생성하려면 /MAP 링커 옵션을 추가하십시오. 자세한 내용은 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/k7xkk3e2(v=VS.100).aspx

+0

고마워,이 완벽하게 작동합니다. – Andrew

+0

생성 된지도 파일 [link] (http://code.google.com/p/mapfile/)을 구문 분석하는 멋진 도구를 찾았습니다. 누군가 유용 할 수도 있습니다. – Andrew

+0

좋아요! 나는 이것이 당신을 위해 일해서 기쁘다. –

2

실행 파일에서 많은 불필요한 것들을 제거하고 mew과 같은 유틸리티를 사용하여 압축 할 수 있습니다.

+0

감사합니다.이 유틸리티를 사용해 보겠습니다. – Andrew

0

버전 제어 시스템을 사용하여 증가 원인을 확인하십시오. 앞으로 ID는 야간 빌드 중에 빌드 된 exe 크기를 기록합니다. 그리고 컴파일러 설정으로 최소 크기를 최적화 할 수 있다는 것을 잊지 마십시오.

2

나는 (안 demoscene 종류의 것들에 대한 있지만) 실행 파일 크기를 검사하는이 유용한 발견했습니다 http://aras-p.info/projSizer.html

나는 이것을 말할 것이다 : 당신은 모든 표준 라이브러리를 사용하는 경우 즉시 중지합니다. 그것은 거대한 코드 bloater입니다. 예를 들어 각각의 고유 한 용도 std::sort은 약 5KB를 더하고 여러 표준 컨테이너에 대해 비슷한 숫자가 있습니다 (물론 사용하는 함수에 따라 다르지만 일반적으로 많은 코드가 추가됩니다).

또한 데모 장면이 아니기 때문에 사람들이 Crinkler을 사용하여 해당 실행 파일을 압축한다고 생각합니다.

+0

VS2010의 pdbs와 작동하지 않는 것처럼 보이지만 어쨌든 고마워요. VS2008로 전환하면이 프로그램이 정말 도움이 될 것입니다. – Andrew

관련 문제