我对这个术语非常困惑。我绝对不喜欢dll上下文中的单词export
。原因只是因为,我不明白它是什么。我不知道在哪里寻找。
它在很多场合都有使用。
任何人都可以解释一下。这是什么意思?在任何其他情况下,它的含义如何变化?什么是出口表?是PE / ELF文件中的.text / .bss / .data部分吗?
为什么我没有听说过 dll import ?如果存在这样的事情。什么时候使用。如果不是太多,一个简单的例子也会很棒。
请澄清,我恳请大家使用简单的术语。我已经困惑了。
答案 0 :(得分:4)
当一个函数暴露给其他要使用的程序时,它将从一个dll 导出。 dll的导出表是公开的函数列表及其可用的地址。通常,dll包含一些导出供公共使用的函数,以及其他未导出的函数 - 它们不能被其他dll或程序使用常规方法调用,但它们可以在内部调用为dll。
您不经常谈论“dll import”,因为dll导入不是单个进程。当你链接到一个DLL时,该dll导出的每个函数都可用于你的dll,但是为了链接到一个dll你通常需要一个.h文件来提供声明,一个.lib文件提供了存根导出函数的指针。这两件事共同构成了dll import 。但是,通过使用LoadLibrary
和GetProcAddress
函数(相当于POSIX dlopen
和dlsym
),可以使用dll函数,而无需使用这些函数。