工具/软件:TI C/C++编译器
您好!
我有一个复杂的项目、最初是用 C++为 TM4C123F MCU 设计的、也被移植到 TM4C1294 MCU。 现在、我遇到了非常严重的问题:
当我运行代码时、我看到其中一个对象的行为如 VMT 损坏、因此当我调试对该对象的函数的调用时、我会看到该调用属于另一个函数。
以下是该项目的详细信息:
1.我有独立于应用程序的内核库,构建为静态库,其中声明了抽象基类 JCApp,并且此类具有虚拟函数:
JCApp 类:公共 EvtTarget、公共 GUI
{
(笑声)
公共:
虚拟空 DefaultConfig(){}
虚拟空 Init()= 0;
(笑声)
};
2.我有应用程序库、bill 作为静态库、其中源自 JCApp 的应用程序类声明:
ASMApp 类:公共 JCApp { (笑声) void DefaultConfig(); (笑声) 公共: (笑声) void Init(); 。}
3.在框架工程中,我有一些其他对象,在构造函数内创建和访问 ASMApp 对象:
SummaryApp::SummaryApp (选择 bool) { (笑声) 对于(i = 0;i < nApps;i++) { (笑声) apps[i]=新的 ASMApp (真); } (笑声) if ((NewSign!= CONF.AppSms)||(newSize!= CONF.AppTotSize)) { 对于(i = 0;i < nApps;i++) { apps[i]->DefaultConfig(); } 。} 。}
在调试过程中,我在"Apps[i]->DefaultConfig();"行上执行步骤,当我进入时,我意外地进入 Init()函数。
我曾尝试将此调用替换为"Apps[i]->Init();"、当我使用 ASMApp 的其他功能时。
因此、看起来 VMT 已损坏。
TM4C123F MCU 上的相同代码工作正常。 两个端口中的工具链都是 ti-cgt-arm_20.2.0.LTS
有人可以帮助解决这个问题吗? 谢谢!