我一直在努力解决这个问题,现在我真的需要弄明白这一点。问题很简单。我有一个库L
依赖于另一个库D
,然后我想将库L
用于我的项目。问题是,当我包含L's标题时,我得到(自然?)错误“无法打开属于D
”的包含文件。
如果我正在编写需要使用L
的项目,我不想关心它的依赖关系。一个实际的例子是包含多个图形API的“渲染框架”。用户不希望为正确的操作系统包含正确的标头,因为这是库的职责!
我真的希望自己清楚明白,如果这个问题已经得到解答(我敢打赌)你能不能给我一些关键词来搜索?。
谢谢你的时间和时间快乐的编码:)
答案 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)。在这种情况下,框架的头文件应该在他们期望的位置找到依赖项的头文件。