delphi 什么是$qqr20System@UnicodeStringt1

juzqafwq  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(118)

我构建了一个使用TMS组件的应用程序。我将TTMSFNCWebBrowser Package 并编译为应用程序使用的核心BPL。我只是更新了TMC组件,然后重新编译了我所有的代码(BPL和EXE)。现在,当我运行我的应用程序时,我得到这个运行时错误:
未找到入口点
无法在动态链接库Core. bpl中找到过程入口点@Vcl@Tmsfncwebbrowser@TTMSFNCCustomWebBrowser@DoDevToolsMethodCompleted$qr20System@UnicodeStringt1。
方法DoDevToolsMethodComplete()在TMS代码中定义为protected virtual。因此,该方法已定义,并且正在导出(因为它不是private)。如果I override那个方法,我的代码会编译,但在运行时仍然会抛出相同的错误。
错误消息中方法名末尾的$qqr20System@UnicodeStringt1是什么?我记得在其他时间看到过它,但我不知道它意味着什么,也不知道如何解决缺少入口点的问题。
我已经在我的电脑上寻找旧的VCL.TMSFNCWebBrowser.dcu文件。没有,只有在更新/安装新TMS组件期间符合的新DCU。
有没有人有过解决这类问题的经验?
(我使用RAD Studio XE 11.1 Update 1和TMS FNC WX Pack 1.6.0.0)

7ivaypg9

7ivaypg91#

错误消息中方法名称结尾处的$qqr20System@UnicodeStringt1是什么?
请参阅Delphi - unmangle names in BPL's
@分隔嵌套的标识符,因此:

  • @Vcl@Tmsfncwebbrowser@TTMSFNCCustomWebBrowser@DoDevToolsMethodCompleted指的是Vcl.Tmsfncwebbrowser.TTMSFNCCustomWebBrowser.DoDevToolsMethodCompleted
  • System@UnicodeString指的是System.UnicodeString

$结束函数名,并将其与其参数信息分开。
qqr指的是调用约定,在本例中是 Delphi 的默认register约定。
20是跟在其后的标识符的长度System@UnicodeString,即第一个参数的类型。
我不知道t1指的是什么。
下面是一篇关于EDN的旧文章,它解释了 Delphi 的名称修饰是如何工作的(它可能不是最新的编译器版本,例如Generics等):
德语原文:
一对一
英文翻译:
Under the magnifying glass: Delphi packages

相关问题