Как скомпилировать код для Windows XP в Visual Studio 2017 - PullRequest
0 голосов
/ 16 октября 2019

Я пытался скомпилировать базовую программу hello world для Windows XP в Visual Studio 2017 для Windows 10. Но она показала некоторые ошибки, как показано на рисунке.

Я уже попробовал шаги, упомянутые в других сообщениях переполнения стека по этому вопросу, и изменил инструменты платформы "Visual Studio 2017 - Windows XP (v141_xp)".

#include<iostream>
using namespace std;
int main() {
    cout << "Hello world\n";
}
1>------ Build started: Project: WindowsProject1, Configuration: Debug Win32 ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\v141_xp\Toolset.targets(39,5): warning MSB8051: Support for targeting Windows XP is deprecated and will not be present in future releases of Visual Studio. Please see https://go.microsoft.com/fwlink/?linkid=2023588 for more information.
1>stdafx.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\objbase.h(239): error C2760: syntax error: unexpected token 'identifier', expected 'type specifier'
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\gdiplusheaders.h(891): error C4596: 'EmfToWmfBits': illegal qualified name in member declaration
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\gdiplusstringformat.h(220): error C4596: 'GetTrimming': illegal qualified name in member declaration
1>Done building project "WindowsProject1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Вы не сказали, с какого шаблона вы начали, но я подозреваю, что у вас включен режим соответствия (/permissive-). Перейдите в Project -> Properties -> C / C ++ -> Language и установите для режима соответствия «No».

Старый Windows 7.1a SDK, используемый для поддержки Windows XP, никогда не обновлялся, чтобы соответствовать /permissive-.

2 голосов
/ 16 октября 2019

Здесь вы столкнулись с проблемами в заголовочных файлах для XP-совместимого SDK. Проблема на самом деле довольно загадочная, но, к счастью, с ней относительно легко разобраться: вам просто нужно «ослабить» проверки строгости соответствия, которые использует компилятор ...

Чтобы сделать это, щелкните правой кнопкой мыши ваш проектв Solution Explorer и выберите «Свойства». На вызываемой странице свойств выберите вкладку «C / C ++», а затем вложенную вкладку «Язык». На отображаемой странице убедитесь, что вы выбрали «Режим соответствия» для « Нет ». Это должно решить проблемы.

Не стесняйтесь просить дальнейших разъяснений и / или объяснений.

...