2013-03-20 30 views
-1

我需要創建一個應用程序,它可以在Windows和Linux上運行,使用SQLite,並用C++編寫。我正在學習如何在C++中使用SQLite,所以我製作了一個簡單的SQLite包裝器來執行查詢,並且可以檢索結果。我收到許多用g ++編譯的錯誤

我使用Visual Studio 2010編寫了這個應用程序,但我沒有使用任何.NET庫或任何可能與Windows相關的東西。該程序編譯在Windows上,它的工作原理,但是當我把它轉到Linux的一切編譯除了SQLite庫;我運行拱門和gcc v4.7.2。

要包含SQLite庫,我去了SQLite下載頁面並下載了Source Code。我提取了sqlite3.csqlite3.h,並在我的課程中包含了sqlite3.h

這是我所賜給編譯代碼的命令:g++ sqlite3.c DatabaseConnection.cpp SQLiteExample.cpp

既然有一些代碼和很多錯誤,我只是要他們在這裏鏈接:

+3

安裝SQLite的分發開發包(名爲類似'libsqlite3-dev'或類似名稱)不是更容易,然後使用它? – 2013-03-20 08:03:24

+1

'sqlite3.c'似乎是用C編寫的,而不是C++。你有沒有嘗試用C編譯器(如gcc)編譯它? C++對許多事情更嚴格,因此代碼可能無效C++。 – 2013-03-20 08:04:27

+0

你的問題不是獨立的,因爲它取決於外部鏈接(隨着時間的推移會變得陳舊)。 – 2013-03-20 08:06:41

回答

1

使用這個Makefile:

FLAGS=-Wall -Werror 
LIBS=-lpthread -ldl 
all: sqlite3.o 
     g++ $(FLAGS) sqlite3.o DatabaseConnection.cpp SQLiteExample.cpp $(LIBS) 

sqlite3.o: 
     gcc $(FLAGS) sqlite3.c -c 
+0

非常感謝,工作。我將make文件添加到存儲庫。 – samwell 2013-03-20 08:22:03

+0

你至少應該把'-Wall -g'傳遞給'g ++'和'gcc' – 2013-03-20 08:41:44

+0

'$(LIBS)'應該放在'g ++'命令的末尾...... – 2013-03-20 10:26:17