(我已经编辑了我原来的问题,使其更容易理解)
这是问题的原型....
//Txn.h --- 这有一个静态变量,可由包含它的 pgms 使用。
class Txn
{
public:
static int i;
static void incr_int();
};
Txn::i=0;
//TXN.cpp
void Txn::incr_int() {i++;}
-> 产生 LibTxn.so
//class1.cpp -> 使用来自 Txn.h 的静态变量的 pgm 之一
#include Txn.h
Txn::incr_int()
-> 使用 LibTxn.so 生成 class1.o。
// class2.cpp -> 另一个使用来自 Txn.h 的静态变量的 pgm
#include Txn.h
cout<<"Txn::i;
-> 通过包含 LibTxn.so 生成 class2.o
-> 使用 class1.o、class2.o 生成 class3(一个 exe)。由于 class1 和 2 都有来自“Txn.h”的语句“Txn::i=0”,因此会发生多个声明问题。
-> 。如果我从 Txn.h 中删除语句“Txn::i=0”,则会出现“未定义引用”错误。
-> .在高等级,这个问题是一种具有会话变量的问题,应该可以从 exe 中的任何 func 进行评估。这些 func 可以在用于形成 exe 的任何 obj 文件中。我适合任何溶胶,即使没有静电。但我无法更改不同 .o 文件(正在使用此会话 var)的创建并结合 .o 来生成 exe。