*.a和*.o文件是linux中的文件,其中*.o就相当于windows中的*.obj文件。当多个*.o合在一起的时候是*.a,用于静态链接,相当于windows中的库文件*.lib。
*.so是动态链接库,相当于*.dll。
其中对于*.lib来说有两种静态lib和动态lib之分。
静态lib是将导出声明和实现都放在lib中,编译后所有代码都嵌入到宿主程序中。
动态lib就相当于一个头文件,是对实现部分(*.dll文件)导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,那么运行时就需要*.dll文件的支持了
(1)静态链接
在使用静态链接时,就需要*.lib文件和一个*.h文件,程序可以正常使用函数
(2)动态链接
在使用dll时,可以使用两种方法,*.lib+*.h+*.dll和直接使用*.dll,通过LoadLibrary和GetProcAddress把函数指针给取出来