SQLite第三課 源碼編譯錯誤以及解決
1)fts2 has a designflaw and has been deprecated
2)fts1 has a designflaw and has been deprecated
解決方案:
解析:FTS1和FTS2都有設計的缺陷,現在已經被廢棄,目前已經提供了FTS3或者FTS4,這些作為全文搜索的模塊,彌補了以前的FTS1的不足。如果確定不會使用到全文搜索,可以直接使用SQLITE_CORE,禁用。將SQLITE_CORE添加到編譯選項。
VS 的基本設置:屬性》》C/C++》》預處理器》》預處理定義
3)Cannot open includefile: ‘unicode/utypes.h‘: No such file or directory
該問題主要是調用了FTS1或者FTS2引起的,通過禁用FTS1和FTS2順利編譯通過。
FTS1有一個設計的缺陷,會導致數據庫錯誤(databasecorruption).強烈推薦廢棄該模塊,改用fts3或者更高的模塊。如果你相信fts1的使用是安全的,可以通過添加DSQLITE_ENABLE_BROKEN_FTS1=1到編譯選項。
FTS1模塊將會作為一個擴展模塊而被編譯(當SQLITE_CORE沒有被定義的情況下)。
另外如果SQLITE_ENABLE_FTS1被定義,FTS1也會被編譯進SQLite內核。
4)Error: no module:rtree
默認情況下sqlite3.exe的控制臺程序是沒有攜帶
5)控制臺程序
建立空的控制臺,然後導入sqlite源碼,編譯出現如下的錯誤:
error LNK2019: 無法解析的外部符號[email protected],該符號在函數 ___tmainCR...
第一步:在C++/預編譯中,添加:SQLITE_ENABLE_RTREE 參數支持rtree
第二步:如果是控制臺程序:
1.菜單中選擇Project->Properties, 彈出Property Pages窗口
2.在左邊欄中依次選擇:
3.在左邊欄中依次選擇:ConfigurationProperties->Linker->System,然後在右邊欄的SubSystem對應的項改為CONSOLE(/SUBSYSTEM:CONSOLE)
6)unexpected end offile while looking for precompiled header. Did you forget to add ‘#include"stdafx.h"‘ to your source?
sqlite源碼不能夠調用預編譯處理,因為sqlite的源碼是純C語言,無法獲得VC++預編譯的好處。
解決:屬性》》C/C++》》預編譯頭》》創建、使用預編譯頭(不使用預編譯頭)
SQLite第三課 源碼編譯錯誤以及解決