gpt4 book ai didi

c++ - 整个应用程序的变量

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

我有一个由几个 DLL 组成的 C++ Windows 应用程序。我想要某种类型的池,我将从中获取对象,但在某种程度上,这个池将在所有 DLL 中可用。
所以我把它放在一个每个人都可以访问的“通用”dll 中,并在头文件中定义它,如下所示:
静态池 globalPool;

我确实可以访问每个 dll,但是这个池被创建了很多次。
我认为它发生在我的每个 DLL 和每个包含带有定义的头文件的文件中。

我怎样才能正确地做到这一点?谢谢:)

最佳答案

对象的 static 声明使对象成为编译单元的本地对象。

通过使用 static,您将在包含 header 的每个编译单元中创建一个 globalPool 对象(变量)。

但是做你想做的事情的方法不仅仅是删除 static

而是定义一个函数来提供对您的池的访问(例如,对它的引用),并从池 DLL 中导出该函数或函数集。

或者更好——好得多——忘记这个想法。这通常是个坏主意。但是,如果您真的想这样做,并且看不到任何替代方案,那么上面就是如何做到这一点。

如果你这样做,也许要考虑线程安全。

也许要注意,Windows DLL 的动态加载在编译器对线程局部变量的支持下不能很好地工作。

干杯,

关于c++ - 整个应用程序的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091209/

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