【发布时间】:2014-12-26 08:08:40
【问题描述】:
有陷入过于具体的问题的风险......
给定一个使用 /CLR 编译的 C++ MFC(混合,非抖动)项目,我已经定义了 200 个类。
当我向该项目添加新的 empty 类时,在调试模式下编译和执行时会出现错误。
发生“System.IO.FileLoadException”类型的未处理异常 在未知模块中。
附加信息:无法加载文件或程序集 'ProjectA, Version=0.0.0.0,Culture=neutral,PublicKeyToken=null' 或其之一 依赖关系。无法找到或加载类型。 (HRESULT 的例外情况: 0x80131522)
ProjectA 是 MFC 项目本身的名称。项目配置中没有对任何ProjectA 程序集的引用,也没有对另一个自定义程序集的引用。
本项目仅引用了一些.NET Framework程序集,以使项目中的一些自定义类可以使用CLR类。
那么,问题是……
- 你知道MFC C++项目有没有类号限制吗?
编辑:
正如我在 cmets 中所说,在发布模式下,编译成功且没有错误。
另外,我清理、构建、清理、关闭 Visual Studio、重新启动计算机......问题仍然出现。 如果我保持 200 节课,就没有错误。当我转到201时,出现错误。
目前我正在尝试在一个新的默认 MFC 项目中重现,添加类直到达到 200 个,以确认存在真正的限制。
编辑 2:错误修复
太好了。 @MSX 和 @frymode 告诉我如何避免他的 cmets 出错。
在 Visual Studio 开发环境中(source/source):
- 打开项目的“属性页”对话框。
- 单击 C/C++ 文件夹。
- 单击代码生成属性页。
- 修改启用字符串池 (/GF) 属性。
谢谢你们!
【问题讨论】:
-
在release模式下会不会出现同样的问题?
-
另外,您是否尝试过清理和重建?
-
否,在发布模式下编译成功且没有错误。是的。我清理,构建,清理,关闭 Visual Studio,重新启动计算机......如果我保持 200 个类,则没有错误。当我转到201时,出现错误。
-
奇怪...有人通过以下步骤解决了这个问题: 在 Visual Studio 开发环境中设置此编译器选项 1. 打开项目的“属性页”对话框。 2. 单击 C/C++ 文件夹。 3. 单击代码生成属性页面。 4. 修改启用字符串池 (/GF) 属性。在命令行属性页中设置 /Gf。这是link
-
很高兴我们提供了帮助。我们无法将其发布为答案,因为该解决方案无法回答您关于班级人数限制的问题。您可以保留问题,因为有人可能会知道答案。
标签: debugging visual-studio-2013 mfc c++-cli clr