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

8bi*_*dge 11 c++ static-libraries visual-studio

我最近使用的Visual Studio 2008项目遇到了一个奇怪的问题.

我正在尝试编译一个新的静态库,它使用另一个静态库中的函数.(假设Lib1是我的静态库项目,而Lib2是Lib1依赖的lib文件).

我可以毫无问题地构建lib1; 它包含lib2的头文件并调用它的函数,没有任何问题.

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

当我在我的测试项目中包含Lib2时,这一切都已修复.

这当然对我有意义; 我可以测试Lib2没有内置到Lib1 ..

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

这是不允许的,因为它允许人们"隐藏"他们自己的第三方图书馆,或者什么?

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

谢谢!

--R

Lou*_*nco 3

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

我看到两种可能性

  1. 记录依赖关系
  2. 在 .h 文件中使用 #pragma 来请求链接 .lib。如果 VS 可以找到它,则与将其包含在您的链接行中相同。

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

 #pragma comment(lib, "libname.lib")
Run Code Online (Sandbox Code Playgroud)