我最近在处理 Visual Studio 2008 项目时遇到了一个奇怪的问题。
我正在尝试编译一个使用来自另一个静态库的函数的新静态库。 (假设Lib1是我的静态库工程,Lib2是Lib1依赖的lib文件)。
我能够毫无问题地构建 lib1;它包含了lib2的头文件并调用了它的函数,没有问题。
问题是当我构建一个将 Lib1 作为依赖项的单独测试项目时;它不会构建,我收到链接器错误。未解析的外部是我试图在来自 Lib2 的 Lib1 中调用的函数。
当我将 Lib2 也包含在我的测试项目中时,这一切都已解决。
当然,这一切对我来说都是有意义的;我可以测试 Lib2 没有内置到 Lib1..
我的问题是:有办法做到这一点吗?理想情况下,我希望能够将 Lib1 部署为独立的库而不需要 Lib2。 (Lib2 实际上只是来自 Windows 平台 SDK 的一个 Lib,所以它并不是什么大问题...)
这是不允许的,因为它会允许人们在自己的库中“隐藏”第三方库吗?
解决这个问题的专业方法是什么?
谢谢!
--R
最佳答案
我不建议使用图书管理员将 Windows 的库内容放入您自己的库中——这很可能违反许可。
我看到了两种可能性
- 记录依赖性
- 在请求链接 .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/