ceflib
2017-09-21 09:20:50 +08:00
目前以 lib 后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。
静态库是一个或者多个 obj 文件的打包,所以有人干脆把从 obj 文件生成 lib 的过程称为 Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个 obj 有错,即静态 lib 只是壳子。
动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己 LoadLibary 调入 DLL 文件,然后再手工 GetProcAddress 获得对应函数了。有了导入库,你只需要链接导入库后按照头文件函数接口的声明调用函数就可以了。
导入库和静态库的区别很大,他们实质是不一样的东西。静态库本身就包含了实际执行代码、符号表等等,而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息。
很明显你的这个 TVicPort.lib 只是个导入库,真正实现代码在 TVicPort.dll