如果包含静态图的静态库与可执行文件和动态库链接,静态图(变量)将被释放多次吗?

问题描述 投票:0回答:1

我们有一个在静态库中定义的静态映射。

此静态库链接到动态库。

可执行文件链接静态库以及上述动态库。

两个问题?

a)静态库代码是否重复?

b)静态库中是否将定义静态映射的多个副本? (这会导致可执行文件退出时崩溃)

c++ static linker
1个回答
0
投票

静态库在编译时链接,而动态库在运行时链接。就是说,每段编译后的代码都必须包含静态库-该库将静态链接到.exe和.dll。

即,当DLL被编译时,它接收到它自己的链接和相关静态库的副本。使用静态库的可执行文件在编译时也会收到其自己的静态库副本。

由于这个原因,.dll和.exe都将具有它们自己的单独的静态库实例运行。因此,用.exe中的静态库创建的任何变量将独立于.dll中的变量,并且将不会被释放,因为这两个副本不会相互作用。

© www.soinside.com 2019 - 2024. All rights reserved.