gpt4 book ai didi

c++ - exe和dll共享同一个静态库

转载 作者:可可西里 更新时间:2023-11-01 13:14:39 30 4
gpt4 key购买 nike

我的应用程序解决方案设置如下 - (我使用的是 Visual Studio,这是一个 VC++ 项目)

App Library dependency diagram

注意:蓝色项目被编译为静态库。

如您所见,exe 和 dll 共享一些静态库( core.lib 和 utils.lib )并且 exe 依次使用 DLL(通过使用导入库的“加载时动态链接”)。

我的问题是它是一个正确的依赖设置吗?我看到的问题是,当这个应用程序启动并运行时,进程地址空间中会有一些重复代码,对吗?也就是说,Core.lib 和 Utils.lib 中的所有函数都会出现两次,对吗?因为,Exe 和 DLL 将把这段代码单独编译到它们中。

如果是,处理上述问题的一种方法是将代码独占移动到 dll 或保留在 exe 中并通过导入/导出共享(b/w exe 和 dll)。但是我在核心和实用程序中有很多类对象,我不喜欢在头文件中导出/导入这些类对象(通过附加 __declspec(dllimport/dllexport))的想法,此外我可能最终将它添加到很多依赖类中对象

这是我的理解,可能有误。请提出更正建议,处理此类问题的通常方法是什么?

问候,

最佳答案

如果你使用 DLL,你必须一路使用 DLL,所有依赖项都向下到 c-runtime。代码重复(内存占用)并不是最糟糕的问题。请记住,应用程序分配的内存不能由 dll 释放,反之亦然,除非两者使用完全相同的运行时 (dll)。

关于c++ - exe和dll共享同一个静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18513933/

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