Когда вы ссылаетесь на MS Visual C Runtime Library из вашей (C++) программы, вы обычно связываете только одну версию, версию выпуска или отладки: либо MSVCR<ver>.dll
, либо MSVCR<ver>D.dll
или with VS2015ucrtbase[D].dll
s и их дополнительные зависимости.Загружает как выпускную, так и отладочную версию MSVCR (или UCRT и т. Д.), Официально поддерживаемую MS?
Отказ от ответственности: Смешение их использование и обмена указателей (и т.д.) от одного к другому приведет к сбоям и безумия - это не, что этот вопрос о.
Однако, когда ваш C или C++ программа ссылки на 3-й партии (C) DLL, которая только поставляется в варианте выпуска, и что DLL использует MSVCR внутренне (!), Он будет ссылаться на и загрузить релиз версии, даже когда вы запускаете свою программу в отладочной версии. (Вариант этого состоит в том, что сторонняя библиотека могла бы, опять внутренне, также использовать совершенно другую версию MSVCR ###. Dll, чем вы, и в этом случае они будут отличаться даже в вашей версии релиза.
Это довольно стандартный сценарий для меня, и я всегда предполагал, что это «просто работает» (что действительно кажется делает).
Мне было интересно, действительно ли это ожидаемый и поддерживаемый сценарий для этих MS-библиотек? Есть ли у вас какие-либо впечатления об обратном?
Адрес ссылки: https://social.msdn.microsoft.com/Forums/en-US/1fef65a6-17c8-47de-a3a9-7271c7e3d368/mfc-compatibility-different-mfc-versions-loaded-in-the- same-process? forum = vcgeneral –