2015-05-07 3 views
0

Я использую Visual Studio 2013 для разработки статических библиотек C++ * .lib. Я получил запрос на компиляцию библиотеки с использованием компилятора Visual Studio 2010, однако у меня его нет на машине разработчика.Скомпилировать статическую библиотеку в Visual Studio 2013

При компиляции динамической библиотеки * .dll можно использовать switch/MT, который будет упаковывать среду выполнения C в dll. Таким образом, динамическая библиотека становится больше. Однако, когда я использую переключатель/MT, статическая библиотека становится меньше (5MB -> 4.9MB), что противоречит ожидаемому.

Вопрос: 1. Могу ли я построить статическую библиотеку в Visual Studio 2013, чтобы впоследствии ее можно было использовать компилятором Visual Studio 2010? 2. Правильно ли установлен переключатель/MT?

ответ

2

Статические библиотеки в целом совместимы только с набором инструментов, который их построил. Это особенно верно в отношении использования Standard C++ Library/STL, поэтому новые версии VS имеют штамп _MSC_VER, встроенный для любого использования заголовков STL, которые будут генерировать ошибки времени соединения, если вы попытаетесь их смешивать.

Также важно, чтобы статические библиотеки были созданы с теми же настройками ЭЛТ (/ MT,/MD,/MTd,/MDd), что и их проект.

DLL, использующий C или COM экспорт с использованием DLL CRT, действительно является единственной «стабильной» библиотекой, которая может быть смешана с различными версиями компилятора.

В противном случае вы должны получить набор инструментов для каждой версии, которую хотите поддержать, и построить все необходимые ароматы .lib.

Смежные вопросы