gpt4 book ai didi

msvcrt - 我应该静态还是动态链接到 Visual Studio C 运行时?

转载 作者:行者123 更新时间:2023-12-03 12:29:48 26 4
gpt4 key购买 nike

我已经阅读了双方关于是否应该在 Visual Studio 项目中静态或动态链接到 C 运行时库的争论,但我仍然不完全确定该怎么想。

我的项目引入了一些第三方库(Python、HDF5、Trilinos 和 Microsoft MPI),每个库都必须使用与我的最终可执行文件相同的运行时库构建(否则它们无法链接在一起)。静态链接时,这些库中的每一个都将包含 C 运行时的副本。我读到这可能会导致问题,因为最终的可执行文件将包含运行时的多个副本,它们都不能相互交互。但是如果相同的符号被多次定义,链接器不会提示吗?

我想避免“DLL Hell”,但我担心在运行时的多个副本中静态链接可能产生的潜在错误。我读错了吗?

此外,我使用的是 Visual Studio 2005,并且我读到 Service Pack 1 运行时不向后兼容。这是否意味着没有 SP1 构建的应用程序将无法在具有 SP1 dll 的机器上运行,即使它们具有相同的名称(例如 msvcr80.dll)?

最佳答案

只有当您将库静态链接到 DLL 时,才会获得运行时的多个副本——每个 DLL 都会获得一个副本,exe 也将获得一个副本。如果它们都是静态库而不是 DLL,它们将全部链接在一起,并且您的所有库将共享相同的运行时。

这是链接器的工作。

关于msvcrt - 我应该静态还是动态链接到 Visual Studio C 运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com