C++ 用C+编译SQlite3+;
我这样编译代码:C++ 用C+编译SQlite3+;,c++,sqlite,compilation,g++,C++,Sqlite,Compilation,G++,我这样编译代码: g++ main.cpp -I sqlite3 其中sqlite3是一个包含源文件的文件夹,我从sqlite-MEGALION-3071100.zip接收到这些源文件,-I是包含源文件的标志 此归档文件包含:shell.c、sqlite3.c、sqlite3.h、sqlite3ext.h 这是我收到的: undefined reference to `sqlite3_open' 该程序只包含#include和调用函数sqlite3_open(…) 如果我使用“sudo a
g++ main.cpp -I sqlite3
其中sqlite3是一个包含源文件的文件夹,我从sqlite-MEGALION-3071100.zip接收到这些源文件,-I是包含源文件的标志
此归档文件包含:shell.c、sqlite3.c、sqlite3.h、sqlite3ext.h
这是我收到的:
undefined reference to `sqlite3_open'
该程序只包含#include和调用函数sqlite3_open(…)
如果我使用“sudo apt get install libsqlite3 dev”并使用命令g++main.cpp-lsqlite3编译程序,我就可以很好地编译 g++ main.cpp -lsqlite3
但我想解决这个问题,因为我不想在另一台计算机上安装一些库,我没有访问权限 从下载sqlite合并
gcc
编译sqlite3
。我尝试了g++
,结果是出现了数百个错误和警告
也许是代码> SqLITE3应该以C++编译的方式编写。C++编译器比C++编译器更为复杂,并且比C编译器好很多。p>
- 步骤1:通过gcc将sqlite3.c编译成sqlite3.o
- STEP2:用G++ 编译C++代码和<强> SqLeLe3.O
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
在使用MinGW32的Windows上,通过以下方式编译动态链接库:
gcc -shared sqlite3.c -o sqlite3.dll
以下是我在Ubuntu上的工作: gcc-o test.csqlite3.c-lpthread-idl
您需要构建库,然后链接到它。为什么您认为在未安装libsqlite3库的情况下可以链接到它?Kerrek SB,您看到该库只包含4个文件。当我有sqlite3.c和sqlite3.h文件时,如何构建它以及我需要什么。我是否需要生成“g++-o sqlite3 sqlite3.h sqlite3.c”???我只是试着用“g++-o myprog myprog.cpp sqlite3.c sqlite3.h”编译它,但我收到了很多错误。你想构建什么-sqlite3命令行clien或sqlite3库?错误:从“void*”到“Table*”的转换无效,等等!!!100行。“G++Me.CPP SqLeLe3.c”中不存在SqLeTe3.CPP。需要用C++编译器(<代码> GCC >)编译<代码> SqLeLe3.c/Cuth>。您需要使用
gcc
而不是g++
来编译它。您可能需要在C++代码中使用<代码>外部“C”<代码>。您将看到一个名为“sqlite3.c”的文件,在编译时需要提供给g++。@AsierGutierrez:这是错误的。C代码>代码> SqLeI3.3.C./C> >与C++不兼容(记住C++不是C的严格超集)。您需要使用c编译器编译sqlite3.c
;一旦你做到了,你就可以把它与C++代码连接起来。code>sqlite3.h已经有了一个条件的外部“C”
,所以这个部分已经处理好了。