库依赖项C ++项目

时间:2014-02-19 22:31:58

标签: c++ c include project static-libraries

我一直在努力解决这个问题,现在我真的需要弄明白这一点。问题很简单。我有一个库L依赖于另一个库D,然后我想将库L用于我的项目。问题是,当我包含L's标题时,我得到(自然?)错误“无法打开属于D”的包含文件。

如果我正在编写需要使用L的项目,我不想关心它的依赖关系。一个实际的例子是包含多个图形API的“渲染框架”。用户不希望为正确的操作系统包含正确的标头,因为这是库的职责!

我真的希望自己清楚明白,如果这个问题已经得到解答(我敢打赌)你能不能给我一些关键词来搜索?。

谢谢你的时间和时间快乐的编码:)

2 个答案:

答案 0 :(得分:0)

L静态链接到“渲染框架”我建议您阅读IMB帮助:When to use dynamic linking and static linking

当您将L构建为静态库时,可以将其“包含”在可执行文件的“内部”。所以,您不必再关心L的位置了。这有一些缺点,例如:如果要更改属于L的子代码段,则必须重新编译所有“渲染框架”。

说:

实施顶级库L。使用一些静态库(例如D)。并在您希望用户使用的文件中包含*.h中的所有D个文件。

Boost库使用此模式进行代码组织。

答案 1 :(得分:0)

  

[我]我有一个使用渲染框架的示例应用程序,我不想手动包含Direct3D或OpenGl [...]

如果您的渲染框架已正确安装,则必须正确安装其依赖项(如OpenGL)。在这种情况下,框架的头文件应该在他们期望的位置找到依赖项的头文件。