gpt4 book ai didi

c++ - 如何管理 C++ 依赖项

转载 作者:行者123 更新时间:2023-11-28 06:28:58 26 4
gpt4 key购买 nike

我对通过库和 dll 进行 C++ 依赖管理还很陌生。我完全理解静态链接和动态链接之间的区别(我猜),这就是我问这个的原因,因为常见的答案通常与不理解区别的问题有关。我正在使用 visual studio,我当前的项目是这样设置的:

Bridge项目:这是一个导出几个类的dll项目。它充当网络代码和应用程​​序代码之间桥梁的共享库。当然,它有自己的依赖项(ZMQ 网络库、MsgPack 序列化等),这些依赖项是静态链接的(使用 .lib 文件)。我的 .dll 是正常生成的,它也是导出的 .lib 文件。 (在我切换到 dll 项目之前,我一直将它编译为 .exe,以便在我编写代码时测试代码...)

App 项目:该项目是一个应用程序项目,希望使用 bridge 通过 bridge 获得对网络功能的完全访问权限。所以我向它添加了 .lib 依赖项,我知道我必须将 .dll 提供给 .exe

但是我的问题是,该应用程序无法编译,因为它缺少来自 ZMQ 的头文件(这是桥接 .dll 依赖项,与应用程序完全无关,因为只有桥接内部 BL 使用它们)。有什么方法可以“烘烤”/包含我对桥 dll(ZMQ、MsgPack、Log4cpp ....)的所有必需依赖项,并提供 -just- bridge.dll 到应用程序(ofc,bridge.lib 作为库输入)?我是否误解了这里明显的事情并且完全错误地进行了此操作?

感谢您的帮助,非常感谢:)

最佳答案

我解决了这个问题,所以我要写下我的问题的答案。非常感谢所有提供帮助的人,尤其是@Öö Tiib、@Joachim Pileborg。

问题是我在我的公共(public)桥库中包含了“私有(private)”库。 (我在 bridge.h 中包含了“zmq.h”)。

由于我的头文件不包含该库中的任何内容,我已将“zmq.h”包含移动到 bridge.cpp 文件中。

关于c++ - 如何管理 C++ 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com