문제

CPP에서 DEBUG 모드의 DLL이 X10이 릴리스보다 X10이 더 크면 .NET에서는 거의 같은 크기입니까?

도움이 되었습니까?

해결책

C ++ 프로그램을 디버깅하려면 추가 정보를 많이 DLL에 보관해야하므로 디버거가 런타임시 코드에 대해 알아낼 수 있습니다. C ++는 C#과 달리 코드를 검사 할 수있는 런타임 요구 사항이 없습니다. 이 정보는 디버그 또는 릴리스 모드를 사용하든 C#에 있습니다.

또한 C ++는 일반적으로 릴리스 모드에서 기계 코드로 직접 컴파일됩니다. 컴파일러의 목표는 코드를 가능한 한 최적화하는 것입니다. 모든 외부 정보와 코드를 제거하십시오. C#에서 컴파일러는 필요한만큼 컴파일 된 의사 코드로 컴파일됩니다. 이 코드는 구축중인 릴리스 또는 디버그에 관계없이 디버깅에 필요한 많은 것들을 유지합니다. 런타임 어셈블리에서 코드를 다시 제공하기 위해 De-Compiler를 작성할 수 있도록 가능합니다.

다른 팁

.NET에서는 모든 디버그 검사를 처리하는 런타임 엔진이기 때문에 CPP에서는 모든 검사가 DLL로 컴파일됩니다.

.NET DLL에는 런타임 반사, 유형 안전 및 코드 액세스 보안을 지원하는 메타 데이터가 포함되어 있습니다. PDBS에있는 유일한 것은 로컬 변수 이름과 줄 번호입니다.

C ++에서와 마찬가지로 추가 메타 데이터 및 때로는 Debugging을 지원하기 위해 No-OPS를 주입해야합니다.

.NET가 아닌 C#을 의미합니다. 또한 프로젝트에 따라 다릅니다.

릴리스에서 54K, 디버그에서 94K 인 C ++/CLI DLL이 하나 있습니다.
그리고 다른 하나는 릴리스에서 88KB이고 디버그에서 124KB입니다.

MFC를 포함하는 C ++/CLI EXE는 471KB, 디버그에서 4446KB입니다!

그리고 내 C# dll은 디버그와 릴리스에서 135KB입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top