如何管理 C++ 依赖项
How to manage C++ dependencies
我对通过库和 dll 进行 C++ 依赖管理还很陌生。
我完全理解静态链接和动态链接之间的区别(我猜),这就是我问这个的原因,因为常见的答案通常与不理解区别的问题有关。
我正在使用 visual studio,我当前的项目是这样设置的:
桥接项目:这是一个导出几个类的dll项目。它充当网络代码和应用程序代码之间桥梁的共享库。
当然,它有自己的依赖项(ZMQ 网络库、MsgPack 序列化等),这些依赖项是静态链接的(使用 .lib 文件)。我的 .dll 是正常生成的,它也是导出的 .lib 文件。 (在我切换到 dll 项目之前,我一直将它编译为 .exe 来测试我编写的代码...)
App 项目:该项目是一个应用程序项目,希望使用 bridge 通过 bridge 获得对网络功能的完全访问权限。所以我向它添加了 .lib 依赖项,我知道我必须将 .dll 提供给 .exe
但是我的问题是,应用程序无法编译,因为它缺少来自 ZMQ 的头文件(这是桥接 .dll 依赖项,与应用程序完全无关,因为只有桥接内部 BL 使用它们).
有什么办法可以 "bake"/包含我对桥接 dll(ZMQ、MsgPack、Log4cpp ....)的所有必需依赖项,并向应用程序(ofc,与bridge.lib 作为库输入)?
我是否误解了这里明显的东西并且完全错误地进行了此操作?
感谢帮助,不胜感激:)
我解决了这个问题,所以我要写下我的问题的答案。
非常感谢所有提供帮助的人,尤其是@Öö Tiib、@Joachim Pileborg。
问题是我在 public 桥库中包含了 "private" 库。 (我在 bridge.h 中加入了 "zmq.h")。
由于我的头文件不包含该库中的任何内容,我已将 "zmq.h" 包含移动到 bridge.cpp 文件。
我对通过库和 dll 进行 C++ 依赖管理还很陌生。 我完全理解静态链接和动态链接之间的区别(我猜),这就是我问这个的原因,因为常见的答案通常与不理解区别的问题有关。 我正在使用 visual studio,我当前的项目是这样设置的:
桥接项目:这是一个导出几个类的dll项目。它充当网络代码和应用程序代码之间桥梁的共享库。 当然,它有自己的依赖项(ZMQ 网络库、MsgPack 序列化等),这些依赖项是静态链接的(使用 .lib 文件)。我的 .dll 是正常生成的,它也是导出的 .lib 文件。 (在我切换到 dll 项目之前,我一直将它编译为 .exe 来测试我编写的代码...)
App 项目:该项目是一个应用程序项目,希望使用 bridge 通过 bridge 获得对网络功能的完全访问权限。所以我向它添加了 .lib 依赖项,我知道我必须将 .dll 提供给 .exe
但是我的问题是,应用程序无法编译,因为它缺少来自 ZMQ 的头文件(这是桥接 .dll 依赖项,与应用程序完全无关,因为只有桥接内部 BL 使用它们). 有什么办法可以 "bake"/包含我对桥接 dll(ZMQ、MsgPack、Log4cpp ....)的所有必需依赖项,并向应用程序(ofc,与bridge.lib 作为库输入)? 我是否误解了这里明显的东西并且完全错误地进行了此操作?
感谢帮助,不胜感激:)
我解决了这个问题,所以我要写下我的问题的答案。 非常感谢所有提供帮助的人,尤其是@Öö Tiib、@Joachim Pileborg。
问题是我在 public 桥库中包含了 "private" 库。 (我在 bridge.h 中加入了 "zmq.h")。
由于我的头文件不包含该库中的任何内容,我已将 "zmq.h" 包含移动到 bridge.cpp 文件。