关于 Dll 链接,静态链接和隐式链接是一回事吗?
我理解隐式和显式链接之间的区别,我认为静态是隐式的同义词,但不确定。
如果它们确实不同,它们之间有什么区别,我如何指定我想要哪一个?
msft 的这个链接使用术语“隐式”来表示我听说的“静态”。它可能是特定于 msft 的东西吗?
是的,在 Windows 领域,当讨论链接到 DLL 时,术语静态链接和隐式链接是同义词。
Visual Studio 文档指出了这一点:
隐式链接有时称为静态加载或加载时动态链接。显式链接有时称为动态加载或运行时动态链接。
在过去的日子里,微软更喜欢隐式和显式链接这两个术语。如今,他们似乎分别更喜欢术语load-time和run-time。同样,当人们谈论链接到 DLL 时,术语静态手段是隐式和加载时间的同义词。
出于以下几个原因,我尝试避免使用与 DLL 链接相关的静态:
可以使用静态 (.a) 或动态库 (.so、.dll) 完成隐式链接。当你编译一个带有库链接的程序时,它是一个隐式链接。它比显式链接更快。
显式链接是当您使用dlopen
动态库(.so、.dll)时。您无需使用库的链接来编译程序,而是使用dlopen
打开文件并提取所需的功能。