我构建了一个使用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)
1条答案
按热度按时间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的