c++ - 让两个 dll 共享一个静态库的陷阱是什么?

标签 c++ windows dll

假设你有两个 dll

Dll A 和 Dll B

它们都静态链接到静态库(即 .lib 文件)。我们称该库为 L。

我知道 L 完全链接到 A 和 B,分别有效地创建了 LA 和 LB。但是,当来自 LA 的对象 O 从 A 传递到 B 时会发生什么?我假设在 A LA 中执行代码,而在 B LB 中执行代码,因为链接就是这样发生的。如果在 A 中创建 O,卸载 A,然后在 B 中使用 O,会发生什么坏事?

最佳答案

静态库只是目标文件的集合。当你链接一个静态库时,一切都发生了,就好像静态库的代码已经包含在你的代码中一样。

所以如果静态库中有全局变量,每个DLL都会得到自己的拷贝,这可能是你想要的,也可能不是你想要的。

关于c++ - 让两个 dll 共享一个静态库的陷阱是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340628/

相关文章:

c++ - SCIP 如何在我使用 SCIP 时使用 C++ 在我的源代码中添加目标函数

c++ - 指针类型的结构还是指针的结构?

c# - 包装 DLL - 了解导入失败的原因

c++ - Qt-creator 使用 dll

c++ - 如何通过添加空格或其他字符来读取用户输入?

c++ - 将 HTML 导出为 PDF(C++、Windows)

.net - Windows 10 VM 上的 Visual Studio - 性能不佳

C remove()函数在windows环境下不删除目标文件

c - 使用 scanf_s 读取一个字符

python - tasklist 没有列出 64 位系统中的所有模块