Символы, такие как _sqlite3_open not found error - PullRequest
1 голос
/ 23 января 2010

Привет, я получаю этот eror:

Undefined symbols:
  "_sqlite3_open", referenced from:
      _main in ccRlWVer.o
  "_sqliite3_close", referenced from:
      _main in ccRlWVer.o
  "_sqlite3_exec", referenced from:
      _main in ccRlWVer.o
  "_sqlite3_errmsg", referenced from:
      _main in ccRlWVer.o
  "_sqlite3_close", referenced from:
      _main in ccRlWVer.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Это мой код:

const char * filename = "database.db";
sqlite3 * ppDb;
int rc;
rc = sqlite3_open(filename, &ppDb);
if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(ppDb));
    sqlite3_close(ppDb);
    exit(1);
}

char * errMsg = 0;
sqlite3_exec(ppDb, sql ,display_result, 0, &errMsg);
if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", errMsg);
}


sqliite3_close(ppDb);
return 0;

Ответы [ 3 ]

12 голосов
/ 23 января 2010

Вы должны передать библиотеку, с которой хотите связать свой код, в этом случае это sqlite3.

Если вы используете gcc, попробуйте добавить:

-lsqlite3 

В качестве аргументов вы передаете команду gcc в своей команде makefile / build.

1 голос
/ 23 января 2010

Похоже, что компилятор не может найти библиотеку sqlite. Обязательно передайте флаг -lsqlite3 при компиляции (как минимум для gcc).

1 голос
/ 23 января 2010

Ваш код не является проблемой, за исключением опечатки в последней строке. Полученная ошибка означает, что при компоновке существует проблема, в частности, что символы sqlite3_* не могут быть решены компоновщиком.

Возможно, вам нужно указать расположение библиотеки sqlite. Если вы расширите свой вопрос с помощью команд, которые вы используете для компиляции, я могу расширить свой ответ =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...