共享对象和DLL之间的区别

时间:2012-11-08 18:43:21

标签: c++ c dll shared-libraries

我有一个库,在编译时正在构建一个名为libEXAMPLE.so(在so.le文件夹中)的共享对象,以及一个名为EXAMPLE.so的dll(在dll文件夹中)。这两个共享对象的大小非常相似,看起来完全相同。在互联网上搜索显示,程序使用dll进行符号解析的方式与使用共享对象的方式可能存在差异。

你能帮助我理解这个吗?

2 个答案:

答案 0 :(得分:5)

“DLL”就是windows喜欢命名动态库的方式

“SO”是linux如何命名他们的动态库

两者都有相同的目的:动态加载。

Windows使用PE二进制格式,Linux使用ELF。

PE: http://en.wikipedia.org/wiki/Portable_Executable

ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

答案 1 :(得分:0)

我想是Linux操作系统。

在Linux中,静态库(.a,也称为归档文件)用于在编译时进行链接,而共享库(.so)用于在加载时和运行时进行链接。

在您的情况下,尽管这两个文件完全相同,但由于某种原因,该库似乎区分了在加载时链接的文件(libEXAMPLE.so)和在运行时链接的文件(EXAMPLE.so)。