我目前有一个像以下
的c ++设置class FlowController
{
public:
//...
private:
cntrl::OneWayValve _intake;
}
正如你所看到我在我的班级中使用cntrl :: OneWayValve实例。 Valve类驻留在另一个库中,我在编译时链接它。 cntrl :: OneWayValve在其实现中有一个cntrl :: Value,就像这样。
class OneWayValve
{
public:
//...
private:
cntrl::Valve _valve;
}
和以前一样,cntrl :: Valve驻留在不同的库中是出于原因,你必须向前一个开发人员询问。
现在当我编译我的FlowController类时,我需要链接OneWayValve库和cntrl :: Valve库。
我的问题: 是否可以在编译时仅与cntrl :: OneWayValve库链接?
前瞻声明?
静态库(真的不想这样做)?
另一种选择?
基本上我不想知道它在内部使用cntrl :: Valve,这不关我的事。
注意:道歉操作系统是Unix。
干杯, 本
答案 0 :(得分:1)
您可以做的是使用名为librarian的工具将Valve库作为OneWayValve库的一部分。我不知道你正在使用什么操作系统/编译器,所以我将描述如何使用Visual Studio,因为这是我实际使用的唯一系统(除非你想要计算CP / M + LIB-80) : - )
如果为OneWayValve项目调出Tools | Options对话框并选择Configuration Properties | Librarian | Additional Dependencies,则可以在Additional Dependencies设置中添加对Valve库的引用。这将导致OneWayValve.lib包含它从Valve.lib引用的任何对象。
答案 1 :(得分:0)
不幸的是,OneWayValve
设计得不是很好。您不仅需要链接到两个库,而且如果OneWayValve
类发生更改,您还必须重新编译Valve
库和代码。
答案 2 :(得分:0)
您可以通过将标题中的OneWayValve和Valve的所有方法定义为内联来实现。然后您不需要链接到库。
但如果它是这样设计的,那么链接到这个库的问题是什么?动态链接库没有错。