1

我刚刚将我相当大的 MFC 应用程序从 VS2008 升级到 VS2013 Professional。经过一些小的调整后一切正常,除了编辑并继续。例如,中断后,我将代码行“x=2”更改为“x=1”,其中 x 是局部变量。继续我收到以下错误:

“添加、重命名、删除或更改数据类型或初始化的全局或静态变量:___ImageBase(引用:c:\temp\vs2013 (2014_12_20)\process\debug\jlglob.obj)”

要让 EnC 完全正常工作,我必须转到 Tools->Debugging->Edit and Continue,然后启用“Enable native Edit and Continue”。我不确定这是做什么的,但如果没有它检查,我得到的只是一条警告说“源文件已更改......”但它没有尝试重新编译。

我检查了明显的设置:

  • 禁用所有优化

  • 设置“用于编辑和继续 /ZI 的程序数据库”

  • 不使用预编译头文件

  • /安全:否

  • 平台工具集 - Visual Studio 2013 (v120)

  • WinVer = 0x0601

  • 我已删除所有中间文件目录,包括 .tlog 文件。

这是 VS2013 的全新安装,没有从 VS2008 安装中获取设置。知道问题可能是什么吗?

4

2 回答 2

0

这只是最近在我正在 V2010 中进行的一个项目中开始发生的,我之前从未遇到过这种情况,除非这是一个合法的案例。

最终,我将其追踪到我在编辑点下方声明的静态初始化列表。通常我把它们放在我的代码的顶部,但在这种情况下,我很懒惰,把它放在我的函数中。似乎每次我在静态列表上方制作和编辑并继续编码导致其行发生变化时都会导致此错误。在函数内移动静态列表也有同样的问题。

将静态列表移动到我的代码顶部修复了编辑和继续问题。

void DoSomething()
{
 int i = 1;
 //Adding a line in here changes the line of the static list below and cause the error.
}

static char* somedata[] = 
{
 "d1",
 "d2",
};

char* GetSomeData(int nIndex)
{
 return somedata[nIndex];
}
于 2015-01-12T08:54:03.570 回答
0

E+C 不仅不适用于简单的公式,它甚至不允许任何类型的输入。目前似乎根本没有解决办法。在此处使用基本的控制台应用程序。正如在许多帖子中所建议的那样,将 .NET Framework 设置为 4.5.1。到目前为止提到的所有启用/禁用设置......无济于事。

总之,解决方案是没有解决方案!

于 2014-12-23T17:36:19.903 回答