【发布时间】:2016-04-18 12:02:32
【问题描述】:
当您从 (C++) 程序链接到 MS Visual C Runtime Library 时,您通常只链接一个版本,发布或调试版本:MSVCR<ver>.dll 或 MSVCR<ver>D.dll 或 with VS2015 ucrtbase[D].dlls 和它们的附加依赖项。
免责声明:混合使用它们的用法并从一个到另一个交换指针(等)会导致崩溃和精神错乱——这不是 em> 这个问题是关于什么的。
但是,当您的 C 或 C++ 程序链接到仅在发布变体中提供的第 3 方 (C) DLL,并且该 DLL 在内部(!) 使用 MSVCR 时,它将链接到并加载发布版本,即使您在调试版本中运行程序也是如此。 (这种情况的一个变体是,第 3 方库可以再次在内部使用与您完全不同的 MSVCR###.dll 版本,在这种情况下,即使在您的发布版本中它们也会有所不同.
这对我来说是一个非常标准的场景,我一直认为这“有效”(实际上它似乎确实)。
然而,我一直在想,这是否真的是这些 MS 库的预期和支持方案?是吗?有没有相反的经历?
【问题讨论】:
标签: visual-studio visual-c++ dll msvcrt