2

我想在我的应用程序中“提供”几个函数/过程甚至是变量,而不是在我自己的代码中使用它们。编译器会自动忽略未使用的变量和函数还是链接器?我该如何改变呢?我已经尝试取消选中CodeGeneration ---> Optimization但没有运气。

4

3 回答 3

6

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

procedure StopLinkerRemoval(P: Pointer);
begin
end;

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

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

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

于 2013-02-05T07:46:04.213 回答
4

要“未使用”或未引用procedures/functions并在您的应用程序privateprotected methods编译,您应该构建一个包并将dcu文件放入您的库路径中。

public并且published methods即使没有在您的应用程序中被引用,也会被编译。

于 2013-02-05T07:44:12.180 回答
1

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

于 2013-02-05T07:38:50.923 回答