在Ubuntu上的Netbeans C ++中对sqlite3_open'错误的Sqlite未定义引用,将SQLite集成到Netbeans C ++ Ubuntu中

时间:2010-08-11 22:43:19

标签: c++ sqlite netbeans ubuntu

我正在尝试在我的Netbeans C ++中使用Sqlite并遵循此处的教程 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 个答案:

答案 0 :(得分:2)

(请参阅下面的编辑)

不确定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 :(得分:1)

在Linux上将Sqlite集成到Netbeans中 1)Synaptic Package Manager - 安装libsqlite3-dev
2)Netbeans-> Your_Project Properties-> Linker-> Libraries-> Add Library-> libsqlite3.a
3)#include sqlite3.h
有用!