Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们有两个 dll,分别是 A 和 B。两者都使用静态链接到它们的库 C 的不同版本。现在,当我们将这些 dll 加载到可执行文件中并使用它们的功能时,程序就会崩溃。
有人可以解释这背后的原因以及如何解决吗?我们只能在 XP 中看到这个问题,它在 Windows 7 中运行良好(不知何故)
程序崩溃是因为不同版本的 C DLL 具有相互冲突的不同类型定义。如果您有某些字段在一个版本中不存在而在另一个版本中存在,那么根据 DLL 的类型,您将获得 2 种不同的场景。托管将无法绑定并会告诉您。非托管会破坏内存,并且您会在其他地方意外地遇到一些令人讨厌的错误。
您在操作系统之间看到不同的行为可能是因为 XP 的内存管理方式与 7 不同(让我相信它是非托管 DLL),但这很难说。