Я следовал за [...] документацией SQLite для user_authentication: https://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt
Ну нет, похоже, что вы не сделали.В этих документах сказано:
Активируйте логику аутентификации пользователя, включив файл исходного кода ext / userauth / userauth.c в сборку и добавив параметр компиляции -DSQLITE_USER_AUTHENTICATION.Заголовочный файл ext / userauth / sqlite3userauth.h доступен приложениям для определения интерфейса.
При использовании объединения SQLite достаточно добавить исходный файл ext / userauth / userauth.c в конецобъединение.
Вы используете объединение, поэтому вам следует добавить [содержимое] userauth.c к объединению.То есть скопируйте его содержимое до конца sqlite3.c
.Из списка каталогов и командной строки видно, что вместо этого вы пытаетесь создать его как отдельный исходный файл, который в конце будет связан с основным.Это не эквивалентно, и, в частности, оно отличается в отношении влияния на область действия static
функций и переменных, на что именно жалуется ваш компилятор.
Неясно, должен ли -DSQLITE_USER_AUTHENTICATION
такжебыть использованы с объединением.Буквальное прочтение документации по SQLite подсказывает, что нет, но я склонен предположить, что это на самом деле требуется в любом случае, если вы хотите включить эту функцию.
Ошибка об отсутствующем заголовке немного связана сВполне возможно, что вы увидите это снова.Если вы это сделаете, может быть достаточно просто удалить или закомментировать соответствующую директиву #include
, поскольку все необходимые объявления из этого заголовка, который входит в число основных источников, уже должны быть включены в объединение.