Я прочитал аргументы с обеих сторон о том, следует ли статически или динамически ссылаться на библиотеку времени выполнения C в проектах Visual Studio, и я до сих пор не совсем уверен, что и думать.
Мой проект использует некоторые сторонние библиотеки (Python, HDF5, Trilinos и Microsoft MPI), каждая из которых должна быть построена из той же библиотеки времени выполнения, что и мой последний исполняемый файл (в противном случае они не могут быть связаны друг с другом). При статическом связывании каждая из этих библиотек будет содержать копию среды выполнения C. Я читал, что это может вызвать проблемы, потому что конечный исполняемый файл будет содержать несколько копий среды выполнения, ни одна из которых не может взаимодействовать друг с другом. Но не будет ли компоновщик жаловаться, если одни и те же символы были определены несколько раз?
Я бы хотел избежать "DLL Hell", но беспокоюсь о коварных ошибках, которые могут возникнуть из-за статического связывания в нескольких копиях среды выполнения. Я неправильно читаю?
Кроме того, я использую Visual Studio 2005 и прочитал, что среда выполнения с пакетом обновления 1 не имеет обратной совместимости. Означает ли это, что приложение, созданное без SP1, не будет работать на компьютере с dll SP1, даже если они имеют одинаковые имена (например, msvcr80.dll)?