将dll构建为导出库的含义是什么?我只是谷歌搜索它。我发现它是一个动态链接库。任何人都可以解释一下究竟是什么dll?为什么我们需要在.dll文件中添加这些语句
extern "c" _declspec(dllexport)
我研究了静态和共享库,但我不知道为什么我们去找dll文件。我学会了.dll用于运行时。但是你可以帮助我并给我更多信息。谢谢你提前
答案 0 :(得分:1)
我的评论可能有点苛刻。我不是dll的权威,但我对它们有一些了解,所以我会尝试简短的解释。
静态库和共享库之间的区别应该很容易在Web搜索中找到,但基本上静态库中的代码都包含在最终的可执行文件中,因此在链接阶段之后,不再需要实际的库文件了。运行程序;另一方面,共享库中的代码不会包含在主程序中 - 这两个部分保持独立,因此每次运行程序时都需要共享库(在Windows上称为dll)。
“将dll构建为导出库”是一个令人困惑的术语。我之前没有听说过,在短暂的搜索中只能在cygwin页面上找到它,考虑到你的初始标签,你可能已经阅读过了。 DLL可以导出其部分或全部功能和数据。导出意味着它们可供其他程序和dll使用。可以通过各种方式控制导出的名称。其中之一是在函数声明中插入_declspec(dllexport)
。另一种方法是使用带有导出部分的定义文件。
创建dll时,可以创建导入库。这是一个文件,可以在构建使用dll的可执行文件时使用,在链接阶段,让它知道从dll导出的名称,以便程序知道如何解析对这些函数的引用;换句话说:如何导入它们。 (这并不总是必要的。许多链接器允许您直接链接到dll本身,从而无需导入库。)
我意识到这可能令人困惑,但是试着找一个教程和一些小例子来看看它是如何工作的,并稍微玩一下。