关于Dll链接,静态和隐式链接是一样的吗?
我理解隐式链接和显式链接之间的区别,我认为静态是隐式的同义词,但我不确定。
如果它们确实不同,它们之间有什么区别,我该如何指定我想要哪一个?
来自msft的这个link使用术语"隐式"对于我所听到的称为"静态"。它可能是一个特定于msft的东西吗?答案 0 :(得分:3)
是的,在Windows-land中,在讨论链接到DLL时,术语静态链接和隐式链接是同义词。
Visual Studio documentation称之为:
隐式链接有时称为静态加载或加载时动态链接。显式链接有时称为动态加载或运行时动态链接。
在过去的日子里,Microsoft更喜欢使用术语隐式和显式链接。如今他们似乎更喜欢条款load-time and run-time。同样,当人们谈论链接到DLL时,术语 static 意味着与隐式和加载时间同义。
我试图避免在DLL链接方面使用 static ,原因如下:
答案 1 :(得分:2)
可以使用静态(.a)或动态库(.so,.dll)进行隐式链接。当您编译带有库链接的程序时,它是一个隐式链接。它比显式链接更快。
显式链接是指dlopen
与动态库(.so,.dll)一起使用时。您没有使用指向库的链接编译程序,但是使用dlopen
打开文件,并提取所需的功能。