19

私はこのようにコードをコンパイルします:

g++ main.cpp -I sqlite3

ここで、sqlite3 は、sqlite-amalgamation-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

しかし、別のコンピューターにいくつかのライブラリをインストールする必要がないため、その問題を解決したいのですが、そのためのアクセス権がありません!

4

5 に答える 5

15
  • Step1: gccで sqlite3.c をsqlite3.oにコンパイルする
  • Step2: c++ コードをg++でsqlite3.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
于 2012-11-21T02:57:25.160 に答える
4

http://www.sqlite.org/download.htmlから sqlite アマルガムをダウンロードします。

  1. sqlite は C で記述されているため、sqlite への参照は extern "C" として含めます。

  2. 「gcc -c sqlite3.c」で sqlite ライブラリを作成します。

  3. "g++ main.c sqlite3.o" を使用して、プログラムを新しく作成したライブラリにリンクします。

于 2012-05-13T20:39:51.837 に答える
1

Ubuntuで次のことがうまくいきました:

gcc -o テスト test.c sqlite3.c -lpthread -idl

  1. ソース ファイル (test.c) で #include "sqlite3.h" を宣言しました #include が機能しませんでした。
  2. gcc -o テスト test.c sqlite3.c -lpthread -idl

以下のように参照します。

https://www.sqlite.org/draft/howtocompile.html

于 2019-05-02T05:30:50.467 に答える
0

MinGW32 を使用する Windows では、次の方法でダイナミック リンク ライブラリをコンパイルします。

gcc -shared sqlite3.c -o sqlite3.dll
于 2018-01-14T10:36:28.890 に答える