LNK2022 - боль, чтобы точно определить. Обычно это означает, что одна из настроек вашего модуля, влияющая на структуру, отличается от других.
Проверьте следующие обычные причины:
- Убедитесь, что все ваши проекты используют одну и ту же библиотеку времени выполнения (/ MDd или / MD) для текущей конфигурации решения. Если один проект использует Debug, а другие используют Release или наоборот, вы получите ошибки LNK2022.
- Убедитесь, что все ваши проекты используют одинаковое выравнивание элементов структуры. Обратите особое внимание, если в одном проекте используется ключ / Zp. Также убедитесь, что вы не используете #pragma pack (n) условно.
Вы можете использовать / d1reportSingleClassLayout_your-class-name_ (без пробела), чтобы получить информацию о макете проблемного класса.
Для получения дополнительной информации см .: Диагностика скрытых нарушений ODR в Visual C ++