Sqlite неопределенная ссылка на ошибку sqlite3_open в Netbeans C ++ в Ubuntu, интеграция SQLite в Netbeans C ++ Ubuntu - PullRequest
0 голосов
/ 12 августа 2010

Я пытаюсь использовать Sqlite в моем Netbeans C ++ и следую инструкциям здесь http://www.dreamincode.net/forums/topic/122300-sqlite-in-c/

Когда я создаю его, он дает мне неопределенную ссылку на sqlite3_open и другие функции sqlite3. Я включил sqlite3.h тоже. Что мне здесь не хватает?

Когда я добавил компоновщик в статическую библиотеку libsqlite3.a в свойствах проекта, мои неопределенные ошибки ссылок исчезли, но теперь он дает мне

/ usr / lib / libsqlite3.a (sqlite3.o): в функции pthreadMutexTry': /usr/lib/libsqlite3.a(sqlite3.o): In function pthreadMutexAlloc ': /usr/lib/libsqlite3.a(sqlite3.o): в функции pthreadMutexAlloc': /usr/lib/libsqlite3.a(sqlite3.o): In function pthreadMutexAlloc ': /usr/lib/libsqlite3.a(sqlite3.o): в функции unixDlError': /usr/lib/libsqlite3.a(sqlite3.o): In function findLockInfo ': /usr/lib/libsqlite3.a(sqlite3.o): в функции findLockInfo': /usr/lib/libsqlite3.a(sqlite3.o): In function unixDlSym ': /usr/lib/libsqlite3.a(sqlite3.o): в функции unixDlClose': /usr/lib/libsqlite3.a(sqlite3.o): In function unixDlOpen ': collect2: ld вернул 1 статус выхода make [2]: * [dist / Debug / GNU-Linux-x86 / cddb] Ошибка 1 make [1]: * [.build-conf] Ошибка 2 make: *** [.build-impl] Ошибка 2

И если я включу sqlite3ext.h, я получу main.cpp: 20: ошибка: «sqlite3_api» не был объявлен в этой области

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

(см. ПРАВКА ниже)

Не уверен, как C ++ работает в NetBeans, но ваше добавление libsqlite3.a выглядит довольно хорошо. Теперь, если у вас есть Makefile, вы можете отредактировать его и определить (или отредактировать) переменную LDFLAGS и передать ее в качестве опции компоновщику ...

SQLite в конфигурации по умолчанию должен связываться с libdl и libpthread , поэтому вам может потребоваться добавить -ldl -lpthread к вашим параметрам компоновки.

Например (если это возможно в NetBeans) добавьте это в ваш Makefile:

LDFLAGS= -ldl -lpthread

В своих проектах я использую это так:

target: $(OBJ)
    gcc $(LDFLAGS)  $(OBJ) -o $@

РЕДАКТИРОВАТЬ:

На самом деле также возможно добавить опции компоновщика в GUI, не редактируя Makefile вручную:

В подменю Свойства конфигурации -> Линкер -> Командная строка просто добавьте -ldl -lpthread в «Дополнительные параметры» и перекомпилируйте ваш проект.

1 голос
/ 13 августа 2010

Интеграция Sqlite в Netbeans в Linux
1) Менеджер пакетов Synaptic - установите libsqlite3-dev
2) Netbeans-> Свойства_проекта-> Линкер-> Библиотеки-> Добавить библиотеку-> libsqlite3.a
3) #include sqlite3.h
Оно работает!

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