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++ 程序中
如何设置 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