创建C++ .lib项目,消费者项目必须引用libs包括

问题描述:

所以我很确定我的设计/设置有问题。但基本上在Visual Studio中,我想创建一个松散地包装第三方代码的.lib项目,该部分非常简单。创建C++ .lib项目,消费者项目必须引用libs包括

然而,我发现当我在我的其他项目中使用lib(在这种情况下,一个dll,可能很容易成为一个不同的proj等exe),dll项目抱怨它需要相同的包含目录作为lib项目。这似乎...没有帮助。 我sorta得到为什么它显示的消息,因为我包括从我的库头,这反过来包括第三方包含文件...

有没有更好的设计建议呢?或者在Visual Studio中链接2个项目的更好方法。

我的消费dll,确实有我的lib的include目录引用,并且我添加了项目作为参考,所以lib输出也应该设置。

以帮助观察

第三方代码 - >我的包装的lib - >我的DLL消费者。

它看起来好像我的消费者代码应该包含相同的头文件,我的包装项目旨在抽象。

我包括从我的lib头,后者又包括第三方包括文件...

这就是问题所在,当然,它需要一个头,如果你想包括该标题,无论是直接还是间接通过另一个标题。

你应该为你的lib的用户产生一个新的头文件,它只包含你公开给用户的函数,并且不包括任何其他函数或者你正在尝试的内部函数的其他头文件包。你的lib的用户可以包含这个头,它将包含他们需要的所有定义。

+0

我想我明白你的意思了,现在我只想着如何做到这一点,不包括第三方头,在我的头部,暴露给我的DLL的消费者。 – nagates

+1

@nagates,这是在h和cpp之间分割你的代码的问题。 h应该只包含接口细节,cpp - 实现。这可能会有所帮助:https://*.com/questions/843389/the-pimpl-idiom-in-practice – KonstantinL

+0

@KonstantinL,如果你把实现放在cpp文件中,那么你的用户是否创建了你的类型?您可以包含接口标头,但消费者代码如何知道更具体的类,它实现了接口(使用第三方代码)。 – nagates