静态库中的静态类成员变量不共享?

汤玛士

在上一个问题中,我描述了一个问题,即一个类的静态成员变量对于包括它们在内的其他不同类实际上确实具有不同的值。

经过进一步研究,我发现包含具有静态成员变量的类的翻译单元被编译为静态库(.a扩展名)。其他翻译单元(我称它们为插件,我在一个名为ADTF的相当复杂的框架中工作),稍后会对该库进行编译和链接。

我的问题现在是:是否期望plugin1和plugin2中的类具有自己的myGlobalBool?当我运行程序时,从plugin1修改cMyLibraryClass :: myGlobalBool不会更改plugin2中的变量。如果可以预期,我该怎么做才能使变量在插件之间共享?请注意,我在Linux下,关于SO(在这里这里)的一些其他问题似乎指出,对于Windows .dll,这是预期的,但否则对我没有帮助。

我正在做的例子(比这更复杂,错误可能在其他地方):

myLibrary.h

cMyLibraryClass
{
    cMyLibraryClass();
    static bool myGlobalBool;
    // Other static variables and stuff
}

myLibrary.cpp

include myLibrary.h

bool cMyLibraryClass::myGlobalBool;

cMyLibraryClass::cMyLibraryClass()
{
    // Constructor stuff
}

// Other function implementations of cMyLibraryClass

我最终

libMyLibrary.a

插件与以下选项链接:(我删除了路径以及包含的所有其他库)

插件1:

g ++ -o plugin1.plb -shared -Wl,-Bsymbolic -Wl,-no-undefined -shared plugin1.os -lmyLibrary

插件2:

g ++ -o plugin2.plb-共享的-Wl,-Bsymbolic -Wl,-无定义-共享的plugin2.os -lmyLibrary

感谢您对这里发生的事情提出的任何建议,我已经尝试了2天。如果您觉得我忘了提供一些基本信息,请问一下,我会尽快将其添加到问题中!谢谢 :-)

萨胡

问题:

如果可以预期,我该怎么做才能使变量在插件之间共享?

创建myLibrary一个动态库(.so)而不是静态库(.a)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中的静态类成员变量和静态变量

来自分类Dev

类模板中的静态成员变量

来自分类Dev

共享库中的静态变量

来自分类Dev

如何在类静态成员中引用静态变量?

来自分类Dev

何时共享静态类变量?

来自分类Dev

模板类中嵌套类的C++静态成员变量

来自分类Dev

静态类成员在Java中是静态的吗?

来自分类Dev

静态类中的变量

来自分类Dev

静态类中的变量

来自分类Dev

模板类中的静态成员

来自分类Dev

全局类中的静态成员

来自分类Dev

无法从数组中的类访问静态成员变量

来自分类Dev

获取类静态成员变量的数组

来自分类Dev

静态类非静态成员

来自分类Dev

非静态类的静态成员?

来自分类Dev

对静态库中的类变量的未定义引用

来自分类Dev

静态库中的Singleton类

来自分类Dev

静态内联函数中的局部函数静态对象不共享

来自分类Dev

静态类中的私有静态成员...好主意吗?

来自分类Dev

仅标头库中的静态成员

来自分类Dev

静态映射作为C ++中的类成员

来自分类Dev

类中静态成员的构造顺序

来自分类Dev

类中的静态成员如何分配?

来自分类Dev

仅使用类中的静态成员

来自分类Dev

静态映射作为C ++中的类成员

来自分类Dev

类中静态成员的构造顺序

来自分类Dev

静态枚举类成员

来自分类Dev

访问静态成员类

来自分类Dev

完全限定的静态成员变量中的歧义