在Delphi中,是否有可能取消混淆像这样的名称?如果可能,我该在哪里获取更多信息?
以下是一个错误消息示例,其中无法在dbrtl100.bpl中找到某个条目,我想知道它无法找到哪个具体函数(单元、类、名称、参数等)。
---------------------------
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版本中都是一样的吗?
- jeroen
编辑1: 感谢Rob Kennedy: tdump -e dbrtl100.bpl 就行了。根本不需要 -um:
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文章(英文Google翻译)。 该文章描述了格式相当准确,应该可以创建一些Delphi代码来解开这个问题。
可惜作者提到的网站(和电子邮件)现在已经不存在了,但知道这些信息还是很有好处的。
--jeroen