2010-05-30 163 views
1

當包括「sqlite3.c」到我的項目,我得到很多編譯器錯誤的:SQLite的編譯器錯誤

error C2027: use of undefined type "_ht" d:\...\sqlite3.c line 19556 
... 
fatal error C1003: Errors in the program are too numerous to allow recovery. The compiler must terminate. 

當計有「sqlite3.c」到一個空的測試項目中,我沒有問題。我比較了項目設置,兩個項目之間沒有太大的區別。

如何解決此問題?有沒有人遇到同樣的問題?

+0

有沒有原因您不使用現有的[DLL](http://www.sqlite.org/download.html)? – 2010-05-30 15:31:48

+0

是的 - 我不想使用該DLL。包括「sqlite.c」而不是將它用作lib是一個常用選項,它在sqlite網站上有描述並且適用於測試項目。 – mspoerr 2010-05-30 15:41:46

回答

1

它看起來像你沒有包括它的所有頭文件(或者你正試圖將C構建爲C++)。不要那樣做。更好的是,將其構建到一個庫中(或者使用別人的構建),並將該構建版本包含在您的項目中。

+0

是的,我將它包含在一個C++項目中。我的外部庫是唯一的解決方案?謝謝 – mspoerr 2010-05-30 16:19:26

+0

建議使用合併源代碼文件:所有項目(c和C++)中的「sqlite3.c」:http://www.sqlite.org/howtocompile.html – mspoerr 2010-05-30 16:36:21

+0

我現在構建了一個靜態庫並鏈接了這個lib到我的應用程序。它現在有效。感謝提示。 – mspoerr 2010-05-30 18:08:03

1

用鼠標右鍵單擊項目中的sqlite3.c文件,然後選擇Properties。去

C/C++ -> Advanced -> Compile As => "Compile as C Code (/TC)" 

這解決了這個問題。確保在所有配置和平臺下進行設置。

我遇到了同樣的問題。我正在創建一個插件,因此在sqlite中進行編譯而不必分發額外的DLL是有益的,這比創建一個額外的項目來構建一個靜態庫要少。