【发布时间】:2017-03-23 09:02:41
【问题描述】:
我正在尝试将在以前版本的 C++Builder 中完成的项目移动到 10.1 Berlin(我正在使用 C++Builder 的试用版)。
项目已成功转换和编译,只需很少的努力。然后我得到了众所周知的链接器LME288问题,但是通过以管理员身份启动C++Builder解决了。
但是现在,当我启动应用程序时,一开始我会收到一个消息框,上面写着“程序异常终止” - 甚至在主窗口出现在屏幕上之前。
在 IDE 和独立版本中,调试版本和发布版本的情况相同。当我在 IDE 中启动程序并在第一条语句处设置断点时,错误消息出现在该语句之前。
我有 64 位 Windows 10 专业版。 C++Builer 10.1 柏林试用版。它显示唯一可访问的平台是 Win32,但我不知道这是否是错误的原因。该程序在以前的版本中运行良好。
谁能告诉我该怎么做?是否有系统的方法来调查问题?
我已经尝试了所有我能找到的建议 - 使用调试器、向我们展示代码、尝试重新安装软件或 Windows、升级到最新更新等。但我从未见过系统化的方法。
【问题讨论】:
-
当您在调试器中运行项目时,它实际上向您显示了什么?你的断点显然执行的太晚了,但是调试器还是应该看到失败的发生,并且特别报告失败的内存地址,让你调试进程,查看调用堆栈,CPU寄存器等。@ 987654321@/
WinMain()不是EXE运行的第一个代码。 -
@Remy 我的错误 - 似乎我按下了“不带调试器运行”(绿色箭头)而不是“运行”。现在我看到调试器注释:“项目引发异常类 EReadError 并带有消息‘读取 TreeView.Indent 时出错:系统错误。代码:1410。类已经存在’。不过仍然不明白原因。到目前为止,发现了一个建议,即从旧项目到新项目的自动转换不正确。是否考虑到编译和链接成功?
-
那个错误没有意义。
EReadError是一个 DFM 流错误,但Indent属性只是一个整数,它不应该对类做任何事情。并且错误 1410 是ERROR_CLASS_ALREADY_EXISTS,这不是 DFM 流系统无论如何都会抛出的,因为它在流期间没有注册类。同样,我建议您使用调试器查看调用堆栈并找到导致错误的代码。 -
如果您在 IDE 中安装了 CodeGuard,请尝试打开它(不确定您是否得到它,我的 BDS2006 有)它会在出现第一个错误时停止(而不是崩溃),这样您就可以看到实际发生的情况但它不适用于大型项目......因为它很慢并且通常会溢出内存使用......我敢打赌你有一些令人讨厌的内存泄漏或 const 字符串指针算术错误(那些让我为移植项目烦恼很多)这些通常在表单创建之前开始。
-
@Remy CodeGuard 已开启。主文件中的语句发生错误:'Application->CreateForm(__classid(TACartDialog), &ACartDialog);'
标签: c++builder