在C++中编译 SQlite3
Compiling of SQlite3 in C++
>我是这样编译代码的:
g++ main.cpp -I sqlite3
其中sqlite3是一个文件夹,其中包含我从sqlite-amalgamation-3071100.zip收到的源文件,-I是包含源的标志。
此存档包含:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h。
这是我收到的:
undefined reference to `sqlite3_open'
该程序仅包含函数sqlite3_open(...)的 #include 和调用;
如果我制作"sudo apt-get install libsqlite3-dev"并使用命令
g++ main 编译程序.cpp-lsqlite3,我可以很好地编译所有 内容
但是我想解决这个问题,因为我不想在另一台计算机上安装一些库,我无法访问!
- 第 1 步:通过 gcc 将 sqlite3.c 编译为 sqlite3.o
- 第 2 步:通过 g++ 将 c++ 代码与 sqlite3.o 一起编译
我的 sqlite shell 和 c++ api 测试的生成文件:
1 CXX = g++
2 cc = gcc
3
4 LIB = -lpthread -ldl
5 BIN = sqlite apiTest
6
7 all : $(BIN)
8 sqlite : sqlite3.c shell.c
9 $(cc) -o $@ $^ $(LIB)
10 apiTest : apiTest.cpp sqlite3.o
11 $(CXX) -o $@ $^ $(LIB)
12 sqlite3.o : sqlite3.c
13 $(cc) -o $@ -c $^
14
15 clean :
16 rm -f $(BIN)
17
18 .PHONY: all, clean
从 http://www.sqlite.org/download.html 下载 sqlite 合并。
-
包括对 sqlite 的任何引用作为 extern "C",因为 sqlite 是用 C 编写的。
-
使用 "gcc -c sqlite3.c" 创建 sqlite 库。
-
使用"g++ main.c sqlite3.o"将您的程序链接到新创建的库
您需要
使用 gcc
编译sqlite3
。我尝试了g++
,结果是数百个错误和警告。
也许sqlite3
shoule 以这样一种方式编写,即它会用C++编译器进行编译。C++编译器比 C 编译器更挑剔,更强制类型,而且要好得多。
以下内容在
Ubuntu 上对我有用:
gcc -o test test.c sqlite3.c -lpthread -idl
- 我在源文件(test.c)中声明 #include"sqlite3.h"#include 不起作用。
- gcc -o test test.c sqlite3.c -lpthread -idl
参考如下:
https://www.sqlite.org/draft/howtocompile.html
在带有 MinGW32 的 Windows 上,通过以下方式编译动态链接库:
gcc -shared sqlite3.c -o sqlite3.dll