在 Delphi 中编译/链接未使用的函数/过程

问题描述 投票:0回答:3

我想在我的应用程序中“提供”多个函数/过程甚至变量,而无需在我自己的代码中使用它们。编译器会自动忽略未使用的变量和函数还是链接器?我怎样才能改变这一点?我已经尝试取消选中

CodeGeneration ---> Optimization
但没有成功。

delphi linker delphi-7
3个回答
6
投票

如果程序中的某些内容引用了该对象,则链接器无法删除它。所以你可以这样利用这个:

procedure StopLinkerRemoval(P: Pointer);
begin
end;

然后在初始化部分你可以这样写:

StopLinkerRemoval(@MyVar);
StopLinkerRemoval(@MyFunction);

您所需要做的就是引用该对象。您不需要调用函数,或读/写变量,只需获取它的地址即可。


4
投票

要在应用程序中编译“未使用”或未引用的

procedures
/
functions
以及
private
protected
methods
,您应该构建一个包并将
dcu
文件放入您的库路径中。

即使没有在您的应用程序中引用,

public
published
methods
也会被编译。


1
投票

链接器会忽略未使用的变量。但是,我不确定它是否对过程和功能具有相同的作用。您无法更改此更改。

© www.soinside.com 2019 - 2024. All rights reserved.