更改静态库的“动态RTL”设置有什么影响?

时间:2012-08-28 15:12:45

标签: c++ c++builder static-linking

在Embarcadero RAD Studio 2010中,静态库的项目选项中有一个名为“动态RTL”的设置。 (它在TLib部分。)

我的印象是,关于是动态还是静态链接RTL的决定是在链接时而不是在编译时进行的。但静态库只能编译;没有链接步骤。那么,如何更改此选项会影响我的静态库?

我有一些使用这些静态库的.exe和.dll项目,我在这些项目中设置了“动态RTL”选项。这是有道理的,因为它们实际上有链接的东西,但我不明白这个设置对静态库的影响。

如果静态库具有动态RTL = true,而使用此库的DLL和EXE具有动态RTL = false,是否会导致任何问题?

1 个答案:

答案 0 :(得分:6)

我不使用Embarcadero,而是使用旧版本的C ++ Builder。我认为他们的工作方式相同。当您使用动态RTL时,您的代码将从程序附带的运行时DLL中调用RTL函数。当您不使用动态RTL时,函数将从libs复制到您的exe或lib文件中。我使用动态RTL减小EXE文件的大小。 exe或libs的逻辑是相同的。这意味着如果您在任何模块中使用动态RTL,无论是exe还是lib,您都必须运送相应的运行时DLL。