Перестроить Crypto++ 5.6.2 для выпуска /MD в Visual Studio 2013

Я хочу пересобрать Crypto++ через MSVC 2013, поэтому, когда я использую библиотеку, чтобы иметь возможность построить свой проект с /MD или /MDd, НЕ /MT или /MTd, потому что я использую QT 5.5.1 с 32-битным компилятором MSVC2013, и это кажется, если я хочу сделать интерфейс с графическим интерфейсом - он использует /MD или /MDd! В этой статье в разделе Static Versus Dynamic Linking упоминается необходимость перестроения (а не сборки) и как вы можете видеть из моего другого вопрос Я сделал это, но это работает только в режиме отладки. В режиме Release ошибки с 117 переходят на 53, но снова возникает та же старая ошибка:

cryptlib.lib(cryptlib.obj): -1: ошибка: LNK2038: обнаружено несоответствие для «RuntimeLibrary»: значение «MT_StaticRelease» не соответствует значению «MD_DynamicRelease» в main.obj

Я делаю именно то, о чем упоминал здесь


person nicksona    schedule 21.10.2015    source источник
comment
Проблема, оказывающая наибольшее давление, — это неудачные преобразования VCUpgrade. Из-за этого я удалил тег Qt (это не имело никакого отношения к вашим проблемам) и добавил тег Visual-Studio (Microsoft создала эти проблемы с помощью своего сломанного механизма VCUpgrade).   -  person jww    schedule 21.10.2015
comment
Мы добавили загрузку для решения вашей проблемы. См. обсуждение vs2010-dynamic.zip на вики Crypto++ в разделе Visual Studio.   -  person jww    schedule 24.10.2015


Ответы (2)


Я хочу пересобрать Crypto++ через MSVC 2013...

Итак, болевые точки здесь — это Microsoft переходит на MSBuild в 2010. Что еще хуже, VCUpgrade плохо конвертирует проекты.

Чтобы помочь пользователям в процессе обновления, Crypto++ предоставляет файл с именем vs2010.zip. Архив содержит предварительно сконвертированный файл решения, файлы проекта и фильтры для Visual Studio 2010 и выше. Файлы были выпущены в октябре 2015 года с версией 5.6.3 Release Candidate.

Обновленные файлы решений в основном работают успешно. Они правильно строят 20 из 24 конфигураций из IDE. 4 из них терпят неудачу с первой попытки; но процесс восстанавливается со второй попытки и создает все 24. Мы знаем, что это проблема зависимости/порядка, но мы не знаем, как ее решить. На Stack Overflow есть открытый вопрос по адресу Как контролировать порядок пакетной сборки → собрать все.

Теперь есть страница, посвященная Visual Studio 2010 и VCUpgrade. См. Visual Studio на вики Crypto++.


В этой статье ...

Я написал эту статью несколько лет назад. . Ты на правильном пути.


Я сделал это, но он работает только в режиме отладки. В режиме Release ошибки с 117 переходят на 53, но снова возникает та же старая ошибка:

cryptlib.lib(cryptlib.obj):-1: error: LNK2038: mismatch detected for 'RuntimeLibrary':
value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj

Мы добавили ZIP-файл для вас. ZIP-файл — это предварительно преобразованное решение Visual Studio 2010 и файлы проекта, в которых используется динамическое связывание во время выполнения (/MD и /MDd). (На самом деле это не только вы, так как многие люди спрашивали об этом на протяжении многих лет).

Решение ваших проблем:

  1. загрузите vs2010-dynamic.zip с вики Crypto++
  2. распаковать поверх существующих файлов дистрибутива Crypto++.
person jww    schedule 21.10.2015
comment
Есть ли другой способ скомпилировать любую версию crypto++ для режима выпуска для работы с MSVC 12.0 с параметрами /MD или /MDd...? Вероятно, вы можете сделать это с помощью MSBuild из командной строки. См. Как переопределить свойство конфигурации? - person jww; 22.10.2015
comment
Сейчас работает для версии 5.6.3rc5 и загрузки vs2010-dynamic.zip в вики. Я тестировал его только для 32 бит. Всем удачной работы, большое спасибо. - person nicksona; 27.10.2015

Я использую cryptopp из исходников с /MD, построенный на vs2013 с использованием последней версии cryptopp (5.6.2). Вы хотите быть в курсе программ для шифрования или безопасности, к тому же у них могут быть исправлены проблемы со сборкой платформы.

Проблемы, о которых вы говорите, звучат как промежуточные файлы из сборки проекта с набором /MT, даже если он позже был изменен на /MD (хотя опасно легко забыть изменить раскрывающийся список на «все конфигурации» и изменить только настройки отладки в одном проекте).

Сначала очистите решение, затем убедитесь, что вы изменили каждый проект на /MD во всех конфигурациях [жирным шрифтом] и снова очистите решение. Теперь найдите и удалите все папки отладки или выпуска и файлы .obj .lib .dll, потому что я не доверяю «чистому решению». Он может получить только те файлы, которые намеревается построить с текущими настройками, но компоновщик может найти больше в поиске ссылок (/verbose:lib).

Потом все восстановить.

person Kenny Ostrom    schedule 22.10.2015