Delphi 以多个名称导出同一DLL函数

Delphi 以多个名称导出同一DLL函数,delphi,winapi,dll,delphi-7,fastmm,Delphi,Winapi,Dll,Delphi 7,Fastmm,我在DLL中创建了一些函数,如下所示: procedure DoThis(A: PChar): Boolean; stdcall; begin f := TFileStreamCreate(A, fmCreate); f.read() f.free; end; 然后,我将其导出为两个名称: export DoThis, DoThis name 'DoThat'; 在大多数情况下,这种“重命名”是有效的。但至少在一种情况下,重命名的函数“DoThat”不从真实文件中读取数据,而是从vo

我在DLL中创建了一些函数,如下所示:

procedure DoThis(A: PChar): Boolean; stdcall;
begin
f := TFileStreamCreate(A, fmCreate);
f.read()
f.free;
end;
然后,我将其导出为两个名称:

export
  DoThis,
  DoThis name 'DoThat';
在大多数情况下,这种“重命名”是有效的。但至少在一种情况下,重命名的函数“DoThat”不从真实文件中读取数据,而是从void中读取数据。如果我在同一个文件上调用DoThis,效果会很好。 由于FastMM4(将代码转换为常规控制台应用程序),我消除了所有内存泄漏

因此,问题是:

这种“更名”行为不合法吗


如果它是合法的-我可以使用FastMM4调试DLL而不将其更改为控制台应用程序吗?

您在问题中描述的内容与实际情况不一致

这种“更名”行为不合法吗

以多个名称导出同一函数是完全合法的。你所描述的问题不会发生

我可以在不更改的情况下使用FastMM4调试DLL吗 把它放进一个控制台应用程序


是的,你可以。在“运行参数”对话框中指定主机应用程序,您就可以调试DLL。

除非您证明,否则您所描述的不会发生。不要粘贴假代码。粘贴一个真实的程序,一个完整的程序。伪造代码是浪费每个人的时间。我不能在这里粘贴超过200KB的代码。我不是在寻找问题的解决方案,只是对这两个问题的回答。你发布的是代码的精简版。你只需要20-30行。削减预算的行为会让你相信问题在其他地方。谢谢你的回答。第二个对我不起作用-通常的FastMM对话框不会出现内存泄漏。但既然我知道这肯定是可能的,我会进一步挖掘。谢谢,这些信息就是我所需要的!FastMM泄漏报告从DLL中显示