Я знаю, что для проекта MFC, созданного с помощью Visual Studio, можно перейти к свойствам проекта, а затем Configuration Properties
-> General
-> use of MFC
и изменить его на Use MFC in a static library
:
Это работает, если полученная сборка должна запускаться в более ранних версиях Windows без необходимости установки DLL времени выполнения MFC или VC. Полученная сборка будет использовать библиотеки DLL, которые уже присутствуют в каждой установке Windows, начиная с Windows 7 и выше. (Возможно, даже до Windows XP.)
Теперь, если я создаю проект без MFC, скажем, тестовое консольное приложение C ++, параметр для использования MFC настроен как «Использовать стандартные библиотеки Windows»:
Но если я запустил полученный двоичный файл, скажем, при новой установке Windows 7, я получаю такую ошибку:
Итак, покопавшись в настройках, я не смог найти способ скомпилировать его со статической привязкой ко всем этим новым версиям библиотек VC RT. Он есть, а я его просто не вижу?
PS. Покопавшись дальше, я обнаружил, что могу изменить "Platform Toolset" на Visual Studio 2017 - Windows XP (v141_xp)
, предполагая, что это сделает его обратно совместимым с Windows XP и выше:
Но затем, если я его скомпилирую, я получаю следующие ошибки:
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\dbghelp.h(1540): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(3056): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
В этой части ObjBase.h
файла, которая не имеет ничего общего с моим тестовым консольным проектом C ++, который я только что создал из шаблона Visual Studio:
Итак, у меня вопрос: могу ли я создать проект C ++, не относящийся к MFC, который может работать в более старых версиях Windows без необходимости установки VC Runtime или каких-либо других дополнительных библиотек?