Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用C+编译SQlite3+;_C++_Sqlite_Compilation_G++ - Fatal编程技术网

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合并

  • 由于sqlite是用C编写的,所以将任何对sqlite的引用都包括在外部“C”中

  • 使用“gcc-csqlite3.c”创建sqlite库

  • 使用“g++main.csqlite3.o”将程序链接到新创建的库

  • 您需要使用
    gcc
    编译
    sqlite3
    。我尝试了
    g++
    ,结果是出现了数百个错误和警告

    也许是代码> SqLITE3应该以C++编译的方式编写。C++编译器比C++编译器更为复杂,并且比C编译器好很多。p>

    • 步骤1:通过gcc将sqlite3.c编译成sqlite3.o
    • STEP2:用G++
    • 编译C++代码和<强> SqLeLe3.O
    <>我的SQLite外壳和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
    

    在使用MinGW32的Windows上,通过以下方式编译动态链接库:

    gcc -shared sqlite3.c -o sqlite3.dll
    

    以下是我在Ubuntu上的工作:

    gcc-o test.csqlite3.c-lpthread-idl

  • 我在源文件(test.c)中声明了#include“sqlite3.h”#include不起作用
  • 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”
    ,所以这个部分已经处理好了。