.net - 调试与发布 dll 大小

标签 .net c++ dll debugging release

为什么在 cpp 中, Debug模式下的 dll 比发布版大 10 倍,而在 .Net 中它们的大小几乎相同?

最佳答案

要调试 C++ 程序,必须将大量额外信息保存在 DLL 中,以便调试器可以在运行时找到有关代码的信息。 C++ 没有运行时要求来检查代码,这与 C# 不同,C# 允许进行广泛的运行时检查,也称为反射。无论使用 Debug模式还是 Release模式,C# 中都存在此信息。

此外,C++ 通常在 Release模式下直接编译为机器代码,编译器的目标是尽可能优化代码,例如。删除所有无关的信息和代码。在 C# 中,编译器编译为伪代码,根据需要及时编译。此代码保留了调试所需的大部分内容,无论您正在构建的是发布版还是调试版。如此之多,以至于可以编写一个反编译器来为您提供从运行时程序集返回的代码。

关于.net - 调试与发布 dll 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1636286/

相关文章:

.net - IncludeInAll(...)的替代品是什么?

c# - 无法将 JSON 数组反序列化为类型 - Json.NET

c++ - 围绕点的二维旋转

c# - 从 C# 中使用 C++ 创建的函数的最佳使用

c# - 如何在 C# 中获取两个字节并将它们组合成一个 UInt16?

c# - 从注入(inject)的 DLL 调用函数

c++ - 对 Matrix<> 或 Block<> 进行数组运算的特征函数

c++ - protected 继承与公共(public)继承和 OO 设计

c++ - Stereo Vision.exe : 0xC0000005: Access violation writing location 0x00000014 中 0x77081d76 (ntdll.dll) 的未处理异常

c++ - 重定 DLL(或提供适当的默认加载地址)值得麻烦吗?