gpt4 book ai didi

c++ - C++静态库中的共享全局变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:10 27 4
gpt4 key购买 nike

我有一个 MS C++ 项目(我们称之为项目 A),我目前正在将其编译为静态库 (.lib)。它定义了一个全局变量 foo。我还有另外两个单独编译的项目(分别称为 B 和 C),每个项目都链接共享静态库 A。B 和 C 都是最终在同一进程中加载​​的 dll。我想在同一进程中在 B 和 C 之间共享 A 的单个 foo 实例:一个单例。我不确定如何在此处使用项目 A 完成单例模式,因为它是分别静态编译到 B 和 C 中的。如果我在 B 和 C 中都将 foo 声明为 extern,那么我最终会在 B 和 C 中得到不同的实例。使用带有静态 getInstance 方法的标准、简单的单例类模式会导致两个静态 foo 实例化。

当项目A被静态编译成B和C时,有什么办法可以做到这一点吗?还是必须将 A 设为 DLL?

最佳答案

是的,您必须将 A 设为共享 DLL,或者在 B 和 C 中将其定义为 extern 并静态链接所有三个。

关于c++ - C++静态库中的共享全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186926/

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