Эти варианты определяют, какая библиотека C ++ используется и какой тип кода генерируется, хотя доступен только «M», то есть многопоточный, однопоточных опций больше нет.
- MTd = многопоточный код отладки и ссылки на статическую библиотеку отладки C ++
- MDd = многопоточный отладочный код и связь с динамической (DLL) библиотекой отладки C ++
- MT = Многопоточный, ссылка на статическую библиотеку C ++
- MD = Многопоточный, связь с динамической (DLL) библиотекой C ++
Только что отредактировал - извините, коды были в неправильном порядке.
Редактировать 2: Подробнее ...
Эти флаги являются параметрами C ++ и не имеют отношения к ssleay32.dll и libeay32.dll. Существует 8 версий libeay32 - 4 для статической сборки (нет зависимости от ssl / libeay32.dll) и 4 для динамической сборки (требуется ssl / libeay32.dll). Каждый из 4 разделен на тип библиотеки C ++ обязательно ...
C ++ доступен для статической или динамической связи с вашим приложением, и для каждого из этих типов вы можете использовать библиотеки отладки или библиотеки выпуска.
/ MT и / MTd (статические) не требуют распространяемого кода C ++, поскольку все вызовы C / C ++ содержатся внутри вашей скомпилированной программы. Если каждый модуль (не только ssleay & co.), На который вы ссылаетесь, использует эти параметры, ваше приложение будет полностью автономным с точки зрения зависимостей C ++.
/ MD и / MDd (динамические) требуют, чтобы распространяемые DLL C ++ были установлены на целевом компьютере. Для / MD выпуски легко загружаются из MSFT, но вам также нужно отметить, какую версию Visual C ++ вы использовали - например, VC ++ 2008, VC ++ 2010 и т. Д. Существует множество версий распространяемого ПО, которые могут вам понадобиться. Для / MDd библиотеки будут на вашем компьютере разработчика, но для этого нет общего выпуска MSFT - но вы можете создать свой собственный установщик, если необходимо, используя Visual Studio; обычно / MDd используется только разработчиком для тестирования.
Версии SSLEAY и т. Д. В исходном вопросе не указывают, какая версия 2005/2008/2010 и т. Д. Visual C ++ использовалась для компиляции версий MD, но после компиляции это можно заметить из встроенной цели с помощью средства просмотра зависимостей (например, зависит.exe). Например. если ваше приложение зависит от MSVCR90.DLL, то это означает VC ++ 9 (это сбивает с толку, это распространяемый в 2008 году).
Всем разработчикам нужна возможность выбрать статическую или библиотечную связь DLL, вот несколько примечаний по каждому из них:
Статическая связь:
- автономный, простой в установке, большой объем кода, дублирование кода при создании нескольких dll и exe.
Динамическая связь:
- меньшая занимаемая площадь, исправления ошибок из обновлений MSFT, общий код, немного сложнее в установке
Если в библиотеке есть код, который возвращает объект C / C ++ (например, выделенную память, std :: string и т. Д.), обязательно связывает ваш код с теми же флагами, которые использовались для компиляции библиотека, без исключений.