“dll导出/导入”是什么意思?

“dll导出/导入”是什么意思?,dll,Dll,我对这个术语感到很困惑。我绝对不喜欢dll上下文中的单词export。原因只是因为,我不明白它是什么。我也不知道去哪里找 它在许多场合使用 从DLL导出 从共享库导出表 通过dll导出的函数 谁能解释一下吗。这意味着什么?在其他语境中,它的意思是如何变化的?什么是导出表?它是否类似于PE/ELF文件中的.text/.bss/.data节 为什么我从来没有听说过dll导入?如果存在这样的事情。什么时候用。如果不是太多,一个简单的例子也很好 请澄清,我恳请大家使用简单的术语。我已经很困惑了。当函

我对这个术语感到很困惑。我绝对不喜欢dll上下文中的单词
export
。原因只是因为,我不明白它是什么。我也不知道去哪里找

它在许多场合使用

  • 从DLL导出
  • 从共享库导出表
  • 通过dll导出的函数
谁能解释一下吗。这意味着什么?在其他语境中,它的意思是如何变化的?什么是导出表?它是否类似于PE/ELF文件中的.text/.bss/.data节

为什么我从来没有听说过dll导入?如果存在这样的事情。什么时候用。如果不是太多,一个简单的例子也很好

请澄清,我恳请大家使用简单的术语。我已经很困惑了。

当函数暴露给其他程序使用时,它会从dll导出。dll的导出表是公开的函数列表以及它们可用的地址。通常,dll包含一些导出供公共使用的函数,以及其他未导出的函数——其他dll或程序无法使用常规方法调用它们,但它们可以作为dll在内部调用


您不经常谈论“dll导入”,因为dll导入不是单个进程。链接到dll时,该dll导出的每个函数都可用于dll,但为了链接到dll,通常需要一个.h文件来提供声明,以及一个.lib文件来提供导出函数的存根指针。这两件事一起构成了dll导入。但是,通过使用
LoadLibrary
GetProcAddress
函数(相当于POSIX
dlopen
dlsym
),可以在没有这两种功能的情况下使用dll函数。完整的符号表(如用于调试的符号表)将包括内部函数、变量名和其他未导出的内容。导出表是二进制映像的一个特定操作系统支持的功能,允许运行时链接。因此它是一种非常特殊的符号表。事实上,C#P/Invoke使用
[DllImport]
属性将函数签名标记为从给定DLL导入。