【问题标题】:Visual Studio 2013 - How to link/include other libraries in my own libraryVisual Studio 2013 - 如何在我自己的库中链接/包含其他库
【发布时间】:2015-01-31 22:18:30
【问题描述】:

我想创建一个库(使用我自己的代码),它将使用并包含其他库。问题是每次我想使用它都不足以链接我的库,但我还必须链接我自己使用的所有库。

因此,如果我的库使用 - 例如 - GLFW、GLEW 等,每个想要使用我自己库中的代码的项目也必须链接到它们。

有没有办法告诉编译器/链接器将这些第 3 方库添加到我自己的库中,这样我只需要链接一个?

我正在开发 Visual Studio 2013(社区),我更愿意将其构建为静态库,然后是动态库,但据我所知,静态库项目甚至无法链接其他库。我必须将其构建为 dnam lib 吗?还是有什么技巧可以完成?

我希望我能很好地提出这个问题来理解它。

【问题讨论】:

    标签: c++ visual-studio shared-libraries static-libraries building


    【解决方案1】:

    在您的库源代码中,您可以尝试添加以下内容:

    #pragma comment (lib, "your_other_library")
    

    然后这将在库中隐式链接,而无需使用链接器设置显式指定它。

    http://support.microsoft.com/kb/153901

    【讨论】:

    • #pragma 不应使代码膨胀。对于第二项,gcc 好像没有这样的#pragma
    • 我的意思是,如果有人使用与 MSVC 不同的编译器,那么当我将其称为“膨胀”时,他们并不真正需要它;)。对于第二个问题 - 我知道 GCC 没有#pragma,我问的是是否有另一种解决方案可以在库中实现“合并/链接到其他静态库”?我问是因为我以前从未做过,我想为那些使用 GCC 来构建它的人提供解决方案。
    • 我更喜欢项目设置而不是不可移植的代码,尽管这只是我的观点。
    • 对于 gcc,您可能别无选择,只能记录要链接到的库。
    • 好吧,我说它工作得很快。我正在尝试使用这种方法一段时间,但是我不会对其进行编码,它只是不起作用。似乎它起作用了,因为我在编译之前忘记删除 .lib 文件...从文件大小等判断。MSVC 编译器在构建静态库时只是忽略它。
    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2020-12-28
    • 2013-12-02
    相关资源
    最近更新 更多