【发布时间】:2013-05-07 15:22:24
【问题描述】:
那么,我可以在我正在制作的静态库中使用仅标头库、动态库和静态库,而无需将所有这些都变成一个大型静态库吗?
具体来说,我在 OpenGL 中编写了一个渲染引擎,并且我使用了很多工具。 即:GLFW、GLM、GLEW,当然还有 OpenGL。
如果用户拥有所有这些,和/或我向他们提供我的库,可以这样做吗?
【问题讨论】:
标签: c++ dll static-libraries
那么,我可以在我正在制作的静态库中使用仅标头库、动态库和静态库,而无需将所有这些都变成一个大型静态库吗?
具体来说,我在 OpenGL 中编写了一个渲染引擎,并且我使用了很多工具。 即:GLFW、GLM、GLEW,当然还有 OpenGL。
如果用户拥有所有这些,和/或我向他们提供我的库,可以这样做吗?
【问题讨论】:
标签: c++ dll static-libraries
问题更多的是链接解决问题。模板库(仅限标头)仅具有为具有显式类型实例化的模板类型生成的代码;这必须在您的库中,否则您将需要一个头库依赖项。外部库和静态库的链接解析以相同的方式解决——通过使用对静态库中项目的外部引用或将 dll 中的代码协调为外部的库。
复杂性体现在兼容性方面——调试与发布、32 位与 64 位、操作系统架构、编译选项、名称修改等等。
要做的最简单的事情,因此可能是最好的,是将编译模块链接到静态库,提供头文件,并记录依赖关系,如果你能提供正确的依赖关系,那就更好了。
如果您使用的是 VC,Lib 工具将帮助您了解库的内容。学会爱它:)
【讨论】: