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

Причина, по которой вы не можете прочитать заголовок на JavaScript, но вы можете просмотреть его в консоли разработчика, - это потому, что для запросов CORS вам нужно разрешить клиенту читать заголовок.

Требуется сервер для отправки этого заголовка:

Access-Control-Expose-Headers:X-Total-Results

Чтобы ответить на ваш вопрос в комментариях, Access-Control-Allow-Headers не разрешает подстановочные знаки в соответствии с W3 Spec

27
задан Jared 7 May 2009 в 21:10
поделиться

5 ответов

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

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

11
ответ дан Tobiesque 14 October 2019 в 14:22
поделиться

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

1
ответ дан cheburashka 14 October 2019 в 14:22
поделиться

Мне удалось исправить эту проблему в VS 2015 с помощью следующих шагов.

[1] (Не уверен, что это необходимо) Отключить / GL во всех компонентах

C / C ++> Оптимизация> Оптимизация всей программы> Нет

В файлы .VCXPROJ это:

<WholeProgramOptimization>false</WholeProgramOptimization>

Выключить / LTCG

Библиотекарь> Общие> Генерация временного кода связи

<LinkTimeCodeGeneration>false</LinkTimeCodeGeneration>  

[2 ] Более важный шаг, убедитесь, что все компоненты рисуются из одних и тех же каталогов. Мой основной EXE-файл использовал:

Release Include
$(WindowsSdkDir)include\um;$(WindowsSdkDir)include\shared;$(UniversalCRT_IncludePath);$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include
Release Library
$(VC_LibraryPath_x86);$(WindowsSdk_71A_LibraryPath_x86);

.lib использовал разные каталоги (неправильно):

Release Include
$(VC_IncludePath);$(WindowsSDK_IncludePath);
Release Library
$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86

Я изменил каталоги .lib так, чтобы они были такими же, как .exe, и ошибка компиляции исчезла.

2
ответ дан Pierre 14 October 2019 в 14:22
поделиться

Два способа:

1. Обновите Sp1 для сборки библиотеки

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

7
ответ дан Gank 14 October 2019 в 14:22
поделиться

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

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

0
ответ дан 28 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: