You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新TMS组件后运行报错:无法找到Core.bpl中的入口点

问题解答

一、错误信息末尾$qqr20System@UnicodeStringt1的含义

这是Delphi编译器生成的名称修饰字符串,相当于给方法分配的唯一“标识ID”,用来区分同名但参数不同的重载方法:

  • $qq:Delphi托管方法的固定前缀
  • r:表示方法的参数为引用传递(比如带const/var修饰符)
  • 20System@UnicodeString:参数类型是System.UnicodeString,20是该类型全称的字符长度
  • t1:说明这个方法包含1个参数

简单来说,这个后缀明确了程序要寻找的是带1个UnicodeString引用参数的DoDevToolsMethodCompleted方法入口。

二、入口点缺失问题的解决方法

1. 彻底清理旧编译产物

即使确认无旧版VCL.TMSFNCWebBrowser.dcu,仍需清理所有可能的残留:

  • 删除项目目录下所有BPL、DCU、OBJ、RES文件
  • 清空RAD Studio默认缓存目录(Documents\Embarcadero\Studio\22.0\Cache)下的所有内容
  • 确保Core.bpl的输出目录完全清空,再重新启动编译流程

2. 显式导出目标方法到Core.bpl

虽然protected virtual方法理论上会被自动导出,但BPL封装场景下编译器可能优化掉未被直接调用的导出项。可在Core.bpl的项目代码中手动添加导出声明:

exports
  @TTMSFNCCustomWebBrowser.DoDevToolsMethodCompleted name '@Vcl@Tmsfncwebbrowser@TTMSFNCCustomWebBrowser@DoDevToolsMethodCompleted$qqr20System@UnicodeStringt1';

注意必须完全照搬错误信息中的入口点名称,字符不能有偏差。

3. 重新编译TMS组件包

更新TMS组件后,先确保组件包本身是基于当前RAD Studio版本编译的:

  • 打开RAD Studio,进入Component > Install Packages,找到TMS FNC相关组件包(如TMSFNCWebBrowserPkg),右键选择Recompile
  • 待TMS组件包编译完成后,按顺序重新编译:Core.bpl → 主EXE,确保整个依赖链使用最新编译产物

4. 核对方法签名一致性

重写方法后仍报错,大概率是签名与新版TMS代码不匹配:

  • 直接查看TMS的VCL.TMSFNCWebBrowser.pas源码,确认DoDevToolsMethodCompleted的准确签名(包括参数类型、修饰符等)
  • 将自己重写的方法修改为与源码完全一致的签名,避免因参数差异导致入口点标识不匹配

5. 统一运行时库版本

确保Core.bpl与主EXE使用的运行时库(RTL)版本一致,均为RAD Studio 11.1 Update 1对应的版本,项目选项中Linking > Runtime Library的配置要保持统一,避免版本不兼容引发的入口点问题

内容的提问来源于stack exchange,提问作者James L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:22:50