-5

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

procedure DoThis(A: PChar): Boolean; stdcall;
begin
f := TFileStreamCreate(A, fmCreate);
f.read()
f.free;
end;

然后我以 2 个名称导出它:

export
  DoThis,
  DoThis name 'DoThat';

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

所以问题是:

这种“更名”不合法吗?

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

4

1 回答 1

3

你在问题中描述的与现实不符。

这种“更名”不合法吗?

以多个名称导出相同的函数是完全合法的。你描述的问题没有发生。

我可以在不将其更改为控制台应用程序的情况下使用 FastMM4 调试 DLL 吗?

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

于 2013-05-12T13:15:26.050 回答