C++ - 你能将一个静态库构建到另一个静态库中吗?

标签 c++ visual-studio static-libraries

我最近在处理 Visual Studio 2008 项目时遇到了一个奇怪的问题。

我正在尝试编译一个使用来自另一个静态库的函数的新静态库。 (假设Lib1是我的静态库工程,Lib2是Lib1依赖的lib文件)。

我能够毫无问题地构建 lib1;它包含了lib2的头文件并调用了它的函数,没有问题。

问题是当我构建一个将 Lib1 作为依赖项的单独测试项目时;它不会构建,我收到链接器错误。未解析的外部是我试图在来自 Lib2 的 Lib1 中调用的函数。

当我将 Lib2 也包含在我的测试项目中时,这一切都已解决。

当然,这一切对我来说都是有意义的;我可以测试 Lib2 没有内置到 Lib1..

我的问题是:有办法做到这一点吗?理想情况下,我希望能够将 Lib1 部署为独立的库而不需要 Lib2。 (Lib2 实际上只是来自 Windows 平台 SDK 的一个 Lib,所以它并不是什么大问题...)

这是不允许的,因为它会允许人们在自己的库中“隐藏”第三方库吗?

解决这个问题的专业方法是什么?

谢谢!

--R

最佳答案

我不建议使用图书管理员将 Windows 的库内容放入您自己的库中——这很可能违反许可。

我看到了两种可能性

  1. 记录依赖性
  2. 在请求链接 .lib 的 .h 文件中使用 #pragma。如果 VS 可以找到它,则与将它包含在您的链接行中是一样的。

http://msdn.microsoft.com/en-us/library/7f0aews7(VS.80).aspx

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

关于C++ - 你能将一个静态库构建到另一个静态库中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445023/

相关文章:

iphone - 静态库中的 Objective-C 类别

c++ - 包含文件不工作 C++

git - Azure DevOps CI/CD 以及将连接字符串与源代码管理分离

c++ - 如何从特定位置开始读取文件 C++

visual-studio - VS2019 构建前和构建后事件始终失败,代码为 1

c# - 找不到页面 - VS2012 FTP 发布后的 .aspx Webapplication

c++ - 如何使用系统库创建静态库?

c++ - 在静态库项目中使用预编译头

c++ - 在非线程安全容器中访问指针指向的值(线程安全映射中的条目)是否可以?

C++ 递归数据类型