0

我有一个包含单例的静态库。我需要在同一进程中加载​​这些单例的单独实例以进行测试。

所以我创建了一个链接相同静态库的 DLL,然后主进程加载该 DLL。

一旦 DLL 尝试加载,我在尝试访问单例中的静态实例指针时就会遇到访问冲突。

我读过的一些帖子说这是不可能的,我需要第二个进程,而其他人说每个 DLL 都在它链接的静态库中获取它自己的所有静态变量的副本,这表明这应该可以工作..

我正在尝试做的事情可能吗?

4

1 回答 1

3

大多数情况下,单身人士真的只是一个人——你的要求是不寻常的。

我知道将静态库链接到 DLL 会导致静态变量的多个实例,因为我自己也见过。每个 DLL 或 EXE 通过链接器获得自己的静态库副本,从而获得自己的静态变量副本。

访问冲突可能来自初始化顺序问题。控制它的最好方法是确保静态变量在一个函数中,该函数可以即时初始化它们,而不是全局变量。

于 2012-09-19T02:23:43.703 回答