Подтвердить что ты не робот

Ошибка C1047: файл объекта, созданный более старым компилятором, чем другие объекты

У меня есть проект, который я создаю на С++ в режиме Release в Visual Studio 2008 SP1 в Windows 7, и когда я его создаю, я продолжаю получать:

фатальная ошибка C1047: объект или библиотечный файл '.\Release\foobar.obj' был создан со старым компилятором чем другие объекты; перестроить старые объектов и библиотек.

Ошибка при соединении.

Я попытался удалить конкретный файл объекта и перестроить, но это не исправить. Я также попробовал сдуть всю папку сборки релизов и перестроить, но это также не исправить. Любые идеи?

4b9b3361

Ответ 1

Я бы предложил переустановить VS 2008 SP1. Установили ли вы другой VS (например, VS Express)? Это, как известно, вызывает помехи в существующей установке VS.

Вы можете попробовать проверить версии компилятора и компоновщика, выполнив cl.exe и link.exe из командной строки Visual Studio.

Ответ 2

У меня была эта проблема, но мое решение отличается:

Для меня виновником было то, что включенная внешняя библиотека была скомпилирована с помощью

/GL (=Enable link-time code generation under
      C/C++/ Optimization / Whole Program Optimization) 

с использованием старой визуальной студии (2005). Я перестраиваю указанную библиотеку в 2005 году без /GL, и ошибка компоновщика исчезла в 2008 году. Поскольку MSDN утверждает, что она связана с параметром /LTCG, это устанавливается автоматически с помощью флага /GL: http://msdn.microsoft.com/en-us/library/ms173554%28v=vs.80%29.aspx

Ответ 3

Два способа:

1.Update to Sp1 для создания lib

2.Пожалуйста, проверьте свою сборку, чтобы убедиться, что оптимизация всей программы отключена. Для статического проекта lib перейдите на страницу свойств и измените "Свойства конфигурации → C/С++ → Оптимизация → Оптимизация всей программы" на "Нет".

Ответ 4

Любой, кто ищет эту тему, ищет ответы... Я тоже столкнулся с этим, но это не проблема с SP1 или проблема с перестройкой или проблема с PCH... она оказалась библиотекой, которая была построена с помощью более поздняя версия VS пытается связать проект с более старым VS. Хотя это кажется очевидным, странная часть была VS2008, сообщая, что объект, который он скомпилировал, был причиной проблемы, которая прислала меня на дикую охоту на гусей...

Ответ 5

У меня была такая же проблема, и моя визуальная панель Studio About сообщила, что у меня установлен SP1. По-видимому, это было не совсем так. Исследование, связанное с моей конкретной ситуацией с этой проблемой, показало, что компилятор ресурсов, по-видимому, является самым жестоким. Это была более старая версия, вызвавшая указанное сообщение об ошибке. Мои установленные исправления (обновление Windows) не решили эту проблему. Может быть, я пропустил важный...

Надеюсь, однажды мы испытаем, что разработчики на самом деле свяжутся с реальной проблемой в своих генерируемых сообщениях об ошибках.:-) "более старая версия компилятора..." Ребята, вы можете сделать лучше, -)

В любом случае, вот ссылка для загрузки на последний SP1 для VS2008, который я использовал для решения этой проблемы.

http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en

Счастливое кодирование.

Ответ 6

Проверьте, есть ли файл .pch (предварительно скомпилированный заголовок) где-то в каталоге проекта и удалите его. затем перестройте проект.
Лучший способ получить чистую сборку - использовать Build- > Clean или Build- > Rebuild All

Изменить: Еще одна вещь, которую вы можете попробовать, в значительной степени отказоустойчива - это воссоздать файл проекта в новом каталоге только из исходных файлов.
Если это работает, вы можете постепенно сравнивать старый проект с новым, чтобы увидеть, что не так.

Ответ 7

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

https://www.dreamspark.com/Products/Product.aspx?ProductId=9

Однако после траулинг-форумов я обнаружил, что установка VS2008 SP1 Express устраняет эту проблему.,.

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=f3fbb04e-92c2-4701-b4ba-92e26e408569

Вы должны быть осторожны, какое место вы загружаете VS2008, так как доступны разные версии одного и того же продукта Express.

Ответ 8

Также может быть, что библиотека-нарушитель была построена с другим параметром "Набор инструментов для платформы" (в "Свойства проекта" > "Общие" ).

Ответ 9

Что касается MSDN, эта ошибка Файл или файл файла файла или файла библиотеки был создан с помощью более старого компилятора, чем другие объекты; перестроить старые объекты и библиотеки вызвано, когда объектные файлы или библиотеки, созданные с помощью /LTCG, связаны друг с другом, но там, где эти объектные файлы или библиотеки построены с различными версиями набора инструментов Visual С++.
Это может произойти, если вы начнете использовать новую версию компилятора, но не делаете чистую перестройку существующих объектных файлов или библиотек.
Чтобы разрешить, перестройте все объектные файлы или библиотеки.