首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi -BPL中的名字

Delphi -BPL中的名字
EN

Stack Overflow用户
提问于 2009-10-19 20:42:39
回答 3查看 2.2K关注 0票数 10

在德尔菲里能解开这些乱糟糟的名字吗?如果是的话,我从哪里得到更多的信息?

在dbrtl100.bpl中找不到特定条目的错误消息示例,我想知道它找不到哪个确切的函数(单位、类、名称、参数等)。

代码语言:javascript
复制
---------------------------
myApp.exe - Entry Point Not Found
---------------------------
The procedure entry point @Dbcommon@GetTableNameFromSQLEx$qqrx17System@WideString25Dbcommon@IDENTIFIEROption could not be located in the dynamic link library dbrtl100.bpl. 
---------------------------
OK   
---------------------------

我知道这是Dbcommon中的GetTableNameFromSQLEx方法(我有带有RTL/VCL源代码的Delphi ),但有时我会碰到并非所有代码都可用的应用程序(是的,客户应该总是为第三方的东西购买所有的源代码,但有时他们不会)。

但是假设这是一个我没有代码的例子,或者只有接口文件(BDE.INT任何人?)它有哪些参数(即哪些潜在的超载)?它有什么返回类型?

这对任何Delphi版本都是一样的吗?

-耶伦

编辑1

多亏了Rob:tdump -e dbrtl100.bpl做到了这一点。根本不需要-um

代码语言:javascript
复制
C:\WINDOWS\system32>tdump -e dbrtl100.bpl | grep GetTableNameFromSQLEx
File STDIN:
00026050 1385 04AC __fastcall Dbcommon::GetTableNameFromSQLEx(const System::WideString, Dbcommon::IDENTIFIEROption)

编辑2

感谢TOndrej,他发现了德国EDN文章 (英文谷歌翻译)。这篇文章非常准确地描述了这种格式,应该可以创建一些Delphi代码来消除这种情况。

皮蒂说,作者提到的网站(和电子邮件)现在已经死了,但很高兴知道这个信息。

-耶伦

EN

回答 3

Stack Overflow用户

发布于 2009-10-20 09:32:28

还请参见这篇文章 (德语)。我想这种损坏可能是向后兼容的,在以后的Delphi版本中为新的语言特性引入了新的损坏方案。

票数 7
EN

Stack Overflow用户

发布于 2010-02-03 21:51:08

如果您有C++Builder,请查看$(BDS)\ source \cpprtl\source\misc\unmangl.c-它包含TDUMP、调试器和链接器使用的解除损坏机制的源代码。(C++Builder和Delphi使用相同的破坏方案。)

票数 7
EN

Stack Overflow用户

发布于 2009-10-19 20:50:59

来自Delphi 2007源文件:

代码语言:javascript
复制
function GetTableNameFromSQLEx(const SQL: WideString; IdOption: IDENTIFIEROption): WideString;

这似乎是同一个版本,因为我的Windows 32文件夹中也有相同的.BPL。

源可以在程序文件文件夹\CodeGear\RAD\5.0\ Source \Win32 32\db中找到。

Borland/Codegear/Embarcadero使用这种编码已经有一段时间了,并且没有给出关于.BPL格式的许多细节。自从我讨厌在我的项目中使用运行库以来,我从来没有对它们非常感兴趣。我更喜欢将它们编译到我的项目中,尽管这样会产生更大的可执行文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1591030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档