windows下:

1、.lib /.dll,指的是编译dll的时候生成的导入.lib。这样的.lib只有导入表,没有代码。和静态库的.lib虽然后缀名一样,但是内容不一样。.lib仅仅是提供链接到.DLL的地址信息等。所以对于动态链接来说,.lib和.dll缺一不可。主要体现在:在编译时如果你加了.lib的依赖项,不会出任何问题,但运行时,若没有.dll,会提示找不到xx.dll的信息。
2、对于静态库lib,索引和实现都在其中。这时不需要dll。
3、 静态链接的静态就是链接时把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。
4、 动态链接的动态就是exe运行时,依赖于dll里面提供的功能,没有这个dll,你的exe无法运行。

Linux下:

1、.so就是动态库文件,.a就是静态库,两个是独立的,没有联系,跟windows不一样

更多推荐

windows和Linux中的动态库区别