Я пытаюсь использовать sqlite с C. В Python очень просто сделать это, но когда я попытаюсь сделать то же самое с C, я получаю сообщение об ошибке.Ошибка связи sqlite C
Я нашел это:
libsqlite in simulator and iOS compiling
, но я просто с помощью текстового редактора, поэтому я не могу использовать XCode (ну, я мог бы, но я не). Когда я
#include <sqlite.h> // or "sqlite.h"
Я получаю сообщение об ошибке, как так:
Undefined symbols for architecture i386:
"_sqlite3_open", referenced from:
_main in ccb8OLfK.o
"_sqlite3_exec", referenced from:
_main in ccb8OLfK.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Если вы хотите взглянуть на мой код, вот все это:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <string.h>
int main(void) {
/* variables */
// create value for storing return codes
int retval;
// the number of queries to be handled
int qnum;
// size of each query
int qsize;
// pointer
int ind;
// statement for fetching tables
sqlite3_stmt *stmt;
// pointer to sqlite3
sqlite3 *db;
// db name
char *home = getenv("HOME");
char *dbPath = strcat(home, "/Desktop/test.db");
/* connect and write */
// Try to connect to database (if fails, returns null)
retval = sqlite3_open(dbPath, &db);
if (retval) {
printf("\x1B[31;1mConnection failed.\x1B[0m\n");
exit(1);
} else {
printf("\x1B[32;1mConnected to Database.\x1B[0m\n");
}
// create table
char q[100] = "create table if not exists test (user text not null, psswd text not null);";
retval = sqlite3_exec(db, q, 0, 0, 0);
}
Он имеет несколько неиспользованными переменных до сих пор и создает только таблицу (если бы я мог так далеко), но она должна компилироваться и работать нормально.
Я новичок в C (Java -> Python -> C). Как мне заставить это работать?
Это кажется очень большой болью, поэтому я могу просто загрузить заголовочный файл для sqlite3 (я бы не знал, откуда это), и включить его в кавычки? Я не знаю, как связать файл, и я бы просто хотел, чтобы этот предварительный тест работал.
Хорошо, я просто сделал это с доморощенным. Это должно работать правильно? ... В sqlite-каталоге в подвале Homebrew (/ usr/local/Cellar /) есть sqlite.h. – dylnmc
В таком случае, да, просто связывайтесь с '-lsqlite3' или включайте библиотеку в Xcode. (AFAIK Xcode должен иметь поддержку sqlite3 как часть CoreData, но я еще не коснулся этой части iOS) – nneonneo
Как я уже сказал, я не использую Xcode ... Я просто использую текстовый редактор. Я помещаю заголовок в тот же каталог, но я понятия не имею, что с ним делать. Мне придется уйти на ночь. Спасибо за помощь! – dylnmc