gpt4 book ai didi

c++ - 动态库、依赖和分布?

转载 作者:太空狗 更新时间:2023-10-29 23:03:49 28 4
gpt4 key购买 nike

在我开始开发更多的 c++ 项目之前,我想建立一个良好的多平台环境并使用一些基本形式的修订 (rsync)。为此,我学习了如何构建 makefile(使用 uname 变量)并且还开始在 Windows 上的 cygwin 环境中使用 mingw。这样一来,我就有希望在类似 unix 的 shell 下以同质的方式在所有平台上进行开发。

我不明白的是分发依赖于动态库的已编译程序的标准工作实践。例如,当我在windows上用mingw编译时,我需要将最基本的库(libstdc++-6.dll)添加到可执行目录才能运行。仅对于标准库,我需要添加三个 .dll,即使如此,依赖 walker 也会显示无数更多,尽管它似乎可以运行。

当然每个库都需要包括在内,因为不可能保证最终用户会在本地拥有它?

如果是这种情况,仅将动态库包含在与可执行文件相同的目录中是否很常见?

我还读到 .so 文件充当导入库和动态库。这些是否也需要包含在可执行目录中?

Cmake 对此类事情很有用,我想我最终会使用它。这就是说我认为这对我先学习如何在没有它的情况下完成跨平台开发会有帮助。

最佳答案

不,您不需要包含 dependency walker 中提到的每个 .dll。它们中的大多数,包括标准库,都由 Microsoft/Posix/etc 保证。与操作系统一起使用。

一个好的经验法则是,如果您必须将它安装在您的计算机上,您可能也必须将它安装在用户的计算机上。

关于c++ - 动态库、依赖和分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597340/

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