Ответ 1
Это потому, что проверка SDL, попробуйте отключить проверку SDL:
Project Properties > Configuration Properties > C/C++ > General > SDL checks [set to No]
Я перенес свой проект из Visual Studio 2012 до 2013 года, и sqlite.c не будет компилироваться в нем. Я получаю эту ошибку времени компиляции:
error C4996: 'GetVersionExA': was declared deprecated
error C4996: 'GetVersionExW' was declared deprecated
Я получил последнюю версию sqlite, чтобы убедиться, что она не была учтена, но это не так. Я не уверен, что делать с этой ошибкой. Я не внес никаких изменений в источник; Я просто создаю проект, включая sqlite.h и sqlite.c. Спасибо.
Это потому, что проверка SDL, попробуйте отключить проверку SDL:
Project Properties > Configuration Properties > C/C++ > General > SDL checks [set to No]
На самом деле C4996 является предупреждением, но иногда он ведет себя как ошибка.
В любом случае вы можете просто отключить его, используя параметр компилятора /wd 4996 или используя прагма:
#pragma warning(disable: 4996)
У меня была аналогичная проблема, пытающаяся использовать WTL в приложении VS 2013 С++. Попробуйте изменить Platform Toolset
на странице General
ваших параметров проекта на Visual Studio 2013 - Windows XP (v120_xp)
.
Лучше, чем отключать предупреждения, вы можете просто отключить соответствующий код, поскольку он предназначен для отключения путем добавления в файл препроцессора.
Щелкните правой кнопкой мыши по sqlite3.c, выберите Свойства, Свойства конфигурации → C/С++ → Препроцессор. Убедитесь, что вы выбрали "все конфигурации" для выпадающих списков конфигурации и платформы (если только у вас нет только одной платформы, а затем выберите только ту, которая доступна) и отредактируйте определения препроцессора как
SQLITE_WIN32_GETVERSIONEX=0;%(PreprocessorDefinitions)
Это пропустит проверку NTDDI_VERSION
, так как этот символ не определен или определен неверно, когда ваш компилятор попадает на sqlite3.c.
Там тоже есть этот комментарий, который может быть интересным:
/*
** NOTE: All sub-platforms where the GetVersionEx[AW] functions are
** deprecated are always assumed to be based on the NT kernel.
*/
Сетевой эффект установки #define
заключается в том, что ваша ОС всегда считается основанной на Win NT, которая есть, так как вы - Win 8.1 или Win 10 (или больше).;)
Итак, в основном, отключив это предупреждение, вы просто делаете свой код медленнее, потому что ему нужно выполнить работу, чтобы выяснить, есть ли это в WinNT или нет.
У меня была такая же проблема, и я просто исключил sqlite3.c и sqlite3.h из проекта (в обозревателе решений щелкните правой кнопкой мыши на них и выберите "Исключить из проекта" ), а затем снова включитесь (щелкните правой кнопкой мыши по ним снова и выберите "Включить в проект" ). И теперь это работает...