我正在尝试使用带有C的sqlite。在Python中执行此操作非常容易,但是当我尝试使用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 - &gt; Python - &gt; C)。我如何让它工作?
这似乎是一个非常大的痛苦,所以我可以只下载sqlite3的头文件(我不知道从哪里)并用引号包含它?我不知道如何链接文件,我只想这个初步测试工作。
答案 0 :(得分:1)
您还必须下载sqlite3源代码并使用您的应用程序进行编译。标题仅提供有关函数的信息; sqlite3源代码(&#34; amalgamation&#34;推荐)提供实际的实现,这是链接器想要的。