我遇到了一些情况,其中一些依赖代码是一个静态库。静态或全局通过链接的多个实例
我们称之为静态库“A”。 我做了一个DLL“B”,它链接到“A”。 可执行文件“C”链接到两者。
I think this diagram is correct:
A static lib
/\
| B dll
\ \
\---C executable
“A”包含使用全局变量的记录器类。这是你公司的一个手,你看着它,并对自己说:“哦,废话什么烂摊子。”
看来,“A”中的这些全局变量具有不同的地址,具体取决于我是在单步执行可执行模块中的代码还是单步执行dll模块中的代码。
这当然会使记录器以意想不到的方式工作。
我假设静态库被复制一次到dll中,一次进入可执行文件,因此实际上是所有静态和全局变量的2个副本。那是对的吗?
问题的第二部分是,将使该记录器成为Meyer的单例解决问题,还是将静态方法范围内的不同地址也取决于我调用哪个模块?
或者,是正确的做法,使所有50个项目动态链接,如果一个动态链接?
@descherjm是的。它们都是Visual Studio 2015中相同解决方案的一部分。该解决方案有一个可执行文件,所有文件都链接到该文件中。 –
你可以把全局变量放在一个dll中吗? – drescherjm
@dresherjm没有任何时间我的上司会满意。 –