Смешивание статических библиотек кода C, созданных из разных версий Visual Studio 2002 и более поздних версий

StackOverflow https://stackoverflow.com/questions/462768

Вопрос

У меня есть статическая библиотека ссылок на подпрограммы C и Fortran, скомпилированные и соединенные вместе с помощью компилятора Visual Studio 2002 C (v7.0) и компилятора Intel Fortran 9.0.018.

Код C в моей библиотеке вызывает и ссылается на статические библиотеки Microsoft C-RunTime (MSCRT) 2002 (однопоточные). Я считаю, что фактический номер версии библиотеки CRT 2002 года - v7.0

Я буду называть эту статическую библиотеку " vs2002if9.lib "

Могу ли я статически ссылаться на мой " vs2002if9.lib " безопасно использовать любую более позднюю версию Visual Studio (2003, 2005 или 2008), не беспокоясь о том, как вызывающая программа ведет себя в отношении вызовов времени выполнения C?

Или я создаю проблемы, смешивая версии статических библиотек CRT?

Что если я предоставлю свой " vs2002if9.lib " сторонним разработчикам программного обеспечения? Какие требования я к ним предъявляю?

Это было полезно?

Решение

Смешивание среды выполнения C не работало для меня в прошлом. Единственный способ, с помощью которого я могу увидеть эту работу {возможно}, - это если вы полностью изолируете использование стека / кучи в границах статически связанного C-Runtime [ничто не пересекает границы через параметры, но тогда какое значение будет вашим vs2009if9 .lib обеспечение].

Например, если вы хотите выделить указатель [кучу памяти] в приложении и передать этот указатель в предоставленную вами библиотеку, какой менеджер кучи следует использовать? Правильный ответ - менеджер кучи, управляющий указателем, но ваша библиотека не будет знать о другом диспетчере кучи. Это становится ужаснее, если ваша библиотека выделяет память для использования приложением, и приложения обязаны освобождать / удалять, используя предоставленный указатель (плохой дизайн - да, но все еще возможно). Опять же, будет использован неправильный менеджер кучи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top