SQLite第三課 源碼編譯錯誤以及解決

來源:互聯網
上載者:User

標籤:sqlite sqlite_core

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的控制台程式是沒有攜帶Rtree模組的,如果需要啟用該模組,需要調用先行編譯定義:SQLITE_ENABLE_RTREE,然後通過shell.c檔案的main重建程式。

5)控制台程式

建立空的控制台,然後匯入sqlite源碼,編譯出現如下的錯誤:

error LNK2019: 無法解析的外部符號[email protected],該符號在函數 ___tmainCR...

第一步:在C++/先行編譯中,添加:SQLITE_ENABLE_RTREE 參數支援rtree

第二步:如果是控制台程式:

1.菜單中選擇Project->Properties, 彈出Property Pages視窗

2.在左側邊欄中依次選擇:ConfigurationProperties->C/C++->Preprocessor,然後在右側邊欄的PreprocessorDefinitions對應的項中刪除_WINDOWS, 添加_CONSOLE.

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第三課 源碼編譯錯誤以及解決

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.