Delphi 以多个名称导出同一DLL函数
我在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
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中显示