C++一个静态库封装调用多个静态库的正确方式

  • 情景

标准windows静态库,只有头文件和.lib,没有DLL。

VS工程属性如下:

C++一个静态库封装调用多个静态库的正确方式

 

A.lib中想调用另一个B.lib,如果B放在A中链接,会出现报错,无法链接上或者无法识别等各种奇怪错误。

  • 正确方式

在exe中导入lib的链接,也就是AB都必须放在exe中去做链接。这样就可以在A中调用B的模块接口了。

 

 

  • 总结

1、静态库是目标文件的集合,通常为后缀为.o 的文件,编译静态库时只有编译过程,没有链接过程,静态库引用其它库并不会在编译的时候把引用的库函数编译到生成的目标库中,只是将编译后的中间文件打包。
2、在创建可执行程序的过程中,静态库同时被链接到程序代码,被主程序调用的函数目标文件连同主程序组合成单一的可执行程序。静态库只在程序链接时起作用,最终的执行程序脱离静态库运行。