我可以在自己的静态库项目中包含现有的静态库吗?

Posted

技术标签:

【中文标题】我可以在自己的静态库项目中包含现有的静态库吗?【英文标题】:Can I include an existing static library in my own static library project? 【发布时间】:2021-03-22 19:30:03 【问题描述】:

我正在 Visual Studio 中创建一个供个人使用的静态库项目,我想将另一个现有的静态库包含到我自己的静态库中。 通常(对于可执行项目)我可以在项目的属性中设置额外的 include 和 lib 目录,但是这次菜单不同,我不知道要使用哪些设置。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以在静态库中包含静态库,但这通常会导致臃肿和其他问题。

最好的方法通常是使用#pragma 将链接库添加到您的“公共标头”中,以便自动链接:

#pragma comment(lib,"nameoflibIneed.lib")

【讨论】:

我还不完全熟悉所有的构建过程,所以我可能没有正确理解所有内容,也许我没有问正确的问题。我已将您建议的内容添加到我的库的标题中,但它仍然无法编译。智能感知也无法从现有库中找到任何类或方法。 您应该打开一个包含特定错误的新问题。此外,仅仅因为 IntelliSense 向您显示错误并不意味着它不会构建。【参考方案2】:

我想出了一种让它发挥作用的 hacky 方法。 我只是像在普通项目中一样正常包含该库,然后才将项目类型更改为 .lib。 显然,即使项目配置页面中的相应菜单消失了,更改项目类型后也会保存其他依赖项。

【讨论】:

以上是关于我可以在自己的静态库项目中包含现有的静态库吗?的主要内容,如果未能解决你的问题,请参考以下文章

除了静态库之外,我还可以使用“gcc -llibnamehere”绑定共享库吗?

我们可以创建 Ghostscript 的静态库吗?

我可以让 gcc 链接器创建一个静态库吗?

我可以在 Visual Studio 2008 中使用 Visual Studio 6 编译的 C++ 静态库吗?

iOS:我可以创建一个所有类(.h 和 .m)为公共的静态库吗?

我们可以静态链接动态 C 库吗?