Компиляция libffi с VS2012 не выполняется с фатальной ошибкой LNK1281: невозможно создать изображение SAFESEH

Компиляция libffi с VS11 дает следующую ошибку компоновщика

libffi\libffi-3.0.9\ms\Win32\Debug\ffi.dll : fatal error LNK1281: Unable to generate SAFESEH image.

Тот же проект компилировался отлично с VS10, но после автоматического обновления с VS2012 он начал выдавать ошибку компоновщика

Объяснение в MSDN слишком загадочно и наименее полезно

Я могу перестроить с помощью /SAFESEH:NO, но я не уверен в импликации.

Пожалуйста, сообщите, что может пойти не так.

Ответ 1

Основной причиной отсутствия SAFESEH является то, что ваше приложение не будет принято для хранилища Windows 8 или для сертификации Windows 8 для настольных компьютеров. Если это не проблема для вас, не стесняйтесь использовать /SAFESEH:NO.

В документации говорится:

Наиболее распространенная причина, по которой компоновщик не может создать изображение, состоит в том, что один или несколько входных файлов (модулей) для компоновщика несовместимы с функцией безопасных обработчиков исключений. Общей причиной того, что модуль не совместим с безопасными обработчиками исключений, является то, что он был создан с помощью компилятора из предыдущей версии Visual С++.

Возможно ли, что обновление проекта до версии VS2012 изменило настройку на /SAFESEH:YES. Возможно, вы никогда не строили с помощью SAFESEH.