【问题标题】:Using other libraries with static library?将其他库与静态库一起使用?
【发布时间】:2013-05-07 15:22:24
【问题描述】:

那么,我可以在我正在制作的静态库中使用仅标头库、动态库和静态库,而无需将所有这些都变成一个大型静态库吗?

具体来说,我在 OpenGL 中编写了一个渲染引擎,并且我使用了很多工具。 即:GLFW、GLM、GLEW,当然还有 OpenGL。

如果用户拥有所有这些,和/或我向他们提供我的库,可以这样做吗?

【问题讨论】:

    标签: c++ dll static-libraries


    【解决方案1】:

    问题更多的是链接解决问题。模板库(仅限标头)仅具有为具有显式类型实例化的模板类型生成的代码;这必须在您的库中,否则您将需要一个头库依赖项。外部库和静态库的链接解析以相同的方式解决——通过使用对静态库中项目的外部引用或将 dll 中的代码协调为外部的库。

    复杂性体现在兼容性方面——调试与发布、32 位与 64 位、操作系统架构、编译选项、名称修改等等。

    要做的最简单的事情,因此可能是最好的,是将编译模块链接到静态库,提供头文件,并记录依赖关系,如果你能提供正确的依赖关系,那就更好了。

    如果您使用的是 VC,Lib 工具将帮助您了解库的内容。学会爱它:)

    【讨论】:

    • 因此,如果我理解正确,只需在 VC 项目配置中添加依赖项和链接器,或多或少都会对 DLL 和 LIB 起到作用。模板库必须包含在我的库中吗?
    • 这太简单了,但是是的。您不能将要链接的目标代码放在多个位置,否则链接器会报错。
    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多