我正在尝试使用 /clr 标志在 Visual-studio-2013 中编译一个相对较大的遗留 C++ 项目。项目生成一个dll。
我收到以下运行时异常:
Type '<Module>' from assembly ... contains more methods than the current implementation allows
我必须补充一点,这种情况仅发生在调试配置中(发布 - 有效)。此外,该项目大量使用模板和宏,(我认为)这有助于生成大量的方法......
关于这个问题的文档很少甚至没有。我通过网络搜索得知的信息(不知道是否准确)是:
clr dll 中的方法数量限制为约 65K。所有本机类的所有方法都进入一些特殊的方法<Module>,因此它构成了全局限制。
一项建议是拆分项目,但这并不是一件很简单的事情,因为类间的依赖关系。我想这是可行的...
任何帮助,将不胜感激。
我最终将代码分成两个 dll,并删除了一些我没有使用的代码。困难的部分是识别“死”代码并确保它广泛使用模板(否则我只是删除桶中的水滴)。
我知道这不是您想听到的解决方案,但我找不到任何其他可行的解决方法。