我通过库和dll对C ++依赖管理相当新。 我完全理解静态和动态链接之间的区别(我猜)这就是我问这个问题的原因,因为常见的答案通常与不理解差异的问题有关。 我正在使用visual studio,我现在的项目设置如下:
Bridge项目:这是一个导出几个类的dll项目。这用作网络代码和应用程序代码之间桥接的共享库。 当然,它有自己的依赖关系(ZMQ网络库,MsgPack序列化,...),它们是静态链接的(使用.lib文件)。我的.dll正常生成,它也导出.lib文件。 (在我切换到dll项目之前,我一直将它编译为.exe来测试我编码的代码......)
应用程序项目:此项目是一个应用程序项目,并希望使用该桥通过网桥获得对网络功能的完全访问权限。所以我将.lib依赖项添加到它,我知道我必须将.dll提供给.exe
然而我的问题是,应用程序将无法编译,因为它缺少来自ZMQ的头文件(它们是桥接.dll依赖项,并且根本不与应用程序相关,因为只有桥内部BL使用它们)。 有没有什么方法可以“烘焙”/包含我所有必需的依赖关系到桥dll(ZMQ,MsgPack,Log4cpp ....)并提供-just- bridge.dll到应用程序(ofc,与bridge.lib一样)图书馆输入)? 我是否误解了一些明显的东西,并且完全走错了方向?
感谢您的帮助,非常感谢:)
答案 0 :(得分:1)
我解决了这个问题,所以我要写一个问题的答案。 非常感谢所有帮助,特别是@ÖöTiib,@ Joachim Pileborg。
问题是我在公共桥库中包含了“私有”库。 (我在bridge.h中包含了“zmq.h”。)
由于我的头文件不包含该库中的任何内容,因此我将“zmq.h”include移动到了bridge.cpp文件中。