exe和dll共享相同的静态库

nai*_*der 7 c++ windows dll visual-c++

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

App Library依赖关系图

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

正如您所看到的,exe和dll共享一些静态库(core.lib和utils.lib),exe依次使用DLL(通过使用导入库"加载时动态链接").

我的问题是它是一个正确的依赖设置吗?我看到的问题是,当这个应用程序启动并运行时,进程地址空间中会有一些重复的代码吗?意思是,Core.lib和Utils.lib中的所有函数都会出现两次吗?cos,Exe和DLL将这些代码分别编译到它们中.

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

这是我的理解,我可能是错的.请提出更正,以及处理此类问题的常用方法是什么?

问候,

dha*_*hka 2

是的,Core 和 Utils 代码将会重复。您可以将它们构建为 dll 并在任何地方使用,而不是将它们构建为静态库。