我的 Dll 大小为 2 MB。现在我遇到一种情况,我需要添加一个带有 2500 个箱臂的开关箱。每个箱子都调用一个函数。因此,通过这个包含 2500 个 case 的 switch case,总共调用了 2500 个不同的函数。 (2500 个函数的全部代码已经存在于 2MB 的 DLL 中。包含的额外代码仅是 switch cases)。现在我的问题是 Dll 的大小在发布版本中增加了 15 MB,导致 DLL 大小变为 17 MB,这根据我的要求是巨大的。请建议我一些方法,通过正确处理 switch 情况,我可以将我的 Dll 大小保持在最小值..任何替代方法..
我正在使用 MSVC 2005,c/c++。我调用了优化以最小化大小 (/01)、/ltcg、(/OPT:REF)、(/OPT:ICF) 等所有可能的最佳优化功能。 (不使用预编译头文件)
非常需要您的建议
提前致谢 阿尼尔
最佳答案
如果所有函数都具有相同的签名,请考虑使用函数指针填充 map
或类似的数据结构,并将您打开的内容作为查找键。没有人能够理解包含 2500 种情况的 switch 语句,因此我建议您不要在代码中使用这种语句。
关于c++ - 我的 Dll 大小因引入大型 switch case 而过大,如何减小 Dll 大小(MSVC C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992412/