CMake находит библиотеку, но подключает неправильную архитектуру

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

При сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Начните с безопасных проверок, сравните результаты на том же устройстве и меняйте только один параметр за раз. Если есть риск потери данных или повреждения оборудования, остановитесь и сохраните сведения об ошибке.

В этой статье
  1. Симптомы и возможная причина
  2. Что проверить перед изменением настроек
  3. Пошаговая диагностика и исправление
  4. Что означает результат проверки
  5. Если проблема возвращается

#Симптомы и возможная причина

При сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Важно проверить не только внешний признак, но и связанный компонент. Ниже приведена последовательность диагностики без необратимых действий.

#Что проверить перед изменением настроек

  • Проверьте целевую архитектуру: Посмотрите генератор CMake и целевую платформу в настройках сборки; отдельно запишите архитектуру используемого компилятора.
  • Проверьте саму библиотеку: С помощью штатных средств компилятора или диспетчера пакетов узнайте, для какой архитектуры собран подключаемый файл; не полагайтесь на имя папки.

#Пошаговая диагностика и исправление

  1. Запишите точные условия возникновенияПри сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Запишите исходную команду, версию компилятора и полный текст первой ошибки. Сравнивайте одинаковые конфигурации сборки и исходный код, чтобы исключить случайные изменения.
  2. Подготовьте безопасную проверкуПеред правками сохраните конфигурацию проекта и файл фиксации зависимостей. Не применяйте случайные бинарные пакеты и не отключайте проверки подписи ради сборки.
  3. Проверьте целевую архитектуруПосмотрите генератор CMake и целевую платформу в настройках сборки; отдельно запишите архитектуру используемого компилятора.
  4. Проверьте саму библиотекуС помощью штатных средств компилятора или диспетчера пакетов узнайте, для какой архитектуры собран подключаемый файл; не полагайтесь на имя папки.
  5. Проверьте пути поискаПросмотрите CMAKE_PREFIX_PATH, find_package и пути в настройках цели. Убедитесь, что среди них нет каталогов сторонней сборки другой архитектуры.
  6. Создайте отдельную папку сборкиИспользуйте новую пустую директорию сборки с правильным генератором, не удаляя исходный проект; повторите конфигурацию и убедитесь, что выбрана ожидаемая библиотека.
  7. Сравните результат в контролируемых условияхПовторите проверку «проверьте целевую архитектуру» и сравните её с исходным поведением: При сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Для точности изменяйте только одну настройку за раз; если выяснилось, что виноват другой компонент, верните неэффективные изменения.
  8. Убедитесь, что изменение действительно помоглоПосле исправления повторите именно исходный сценарий «CMake находит библиотеку, но подключает неправильную архитектуру» в обычных условиях использования. Проверьте, что исчезло сообщение об ошибке и не появились новые ограничения. Если результат временный, запишите, когда неисправность возвращается.
  9. Если не помогло — соберите сведения для поддержкиПри сохранении ошибки изолируйте минимальный воспроизводимый пример и приложите обезличенный журнал, версию инструмента и список задействованных зависимостей. Не повторяйте сбросы и изменения наугад; вместе с обращением укажите, какие отдельные проверки уже выполнены.

#Что означает результат проверки

Если после выполнения конкретного действия описанный симптом исчез, причиной вероятно было именно затронутое условие. Если ситуация не изменилась, сравните результаты с шагами «Проверьте целевую архитектуру» и «Проверьте саму библиотеку», сохранив сведения о модели и версии программы.

#Если проблема возвращается

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

Так эту ошибку тоже называют

Источники и обновления

Для этой статьи пока не указаны источники. Мы отмечаем такие материалы и дополняем их при проверке.

Последнее обновление статьи: 3 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.