Visual Studio 2013 - 如何在我自己的库中链接/包含其他库

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

#pragma comment (lib, "your_other_library")

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

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

【讨论】:

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

以上是关于Visual Studio 2013 - 如何在我自己的库中链接/包含其他库的主要内容,如果未能解决你的问题,请参考以下文章

[z]一步步教你如何在 Visual Studio 2013 上使用 Github

如何使用 Visual Studio Express 2013 将 C# 接口实现/合并到一个简单的 C++ 程序中

Boost 库和 Visual Studio 2013

如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建

如何使用Visual Studio 2013或Visual Studio 2017设置TFS 2013

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015