Использование CRT (/ MD) версии 4053 вместо самой последней (5592) в DLL (VS2005 SP1) - PullRequest
2 голосов
/ 26 апреля 2011

Я надеюсь, что вы можете помочь мне с этим.

Я хочу собрать dll (статически связывающий другие, сторонние библиотеки), используя версию CRT (/ MD) 4053 вместо последней (5592) в Visual Studion 2005 SP1.

Мне интересно, достаточно ли использовать следующий метод для этого. При использовании этого метода во всех зависимых проектах решения, насколько я понимаю, встроенный манифест dll изменяется, чтобы указать требуемую версию CRT (и MFC, ATL). Это предположение верно?

Достаточно ли просто убедиться, что во встроенном манифесте DLL указана требуемая версия? Разве я не должен также использовать правильную библиотеку импорта (msvcrt.lib), принадлежащую более старой (4053) CRT dll (msvcr80.dll) при сборке моей dll (с игнорированием определенной библиотеки)? Как эта библиотека импорта (msvcrt.lib) изменилась с такими незначительными изменениями версии?

Заранее спасибо!

Марк Мауссен

1 Ответ

1 голос
/ 26 апреля 2011

Номер версии CRT объявлен в vc / include / crtassem.h.Для MFC это vc / atlmfc / include / mfcassem.h.Для ATL это vc / atlmfc / include / atlassem.h.Если на вашем компьютере разработчика установлено обновление для системы безопасности, эти файлы будут обновлены.Использование #define _CRT_ASSEMBLY_VERSION xyzw (и так далее) перед #include любой заголовок CRT заменит этот номер версии.То же самое можно сказать и об удалении обновления для системы безопасности.

В противном случае неразумно, целевой компьютер все еще собирается использовать версию DLL-версии .5592, если на ней установлено обновление для системы безопасности.Он развертывает «политику издателя», которая перенаправляет номер версии, обеспечивая автоматическое исправление старых программ.Тестирование версии, которая работает на компьютере вашего клиента, конечно, всегда лучше.Покупатели очень редко ценят доставку установщика с известной проблемой безопасности.

...