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

2021-09-20 23:29:43 字數 1515 閱讀 7913

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: 無法解析的外部符號_winmain@16,該符號在函式 ___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++》預編譯頭》建立、使用預編譯頭(不使用預編譯頭)

python第三課答案 python第三課

字串操作 s alexwusir s1 s.capitalize 首字母大寫 print s1 全大寫,全小寫 s2 s.upper s21 s.lower print s2,s21 大小寫翻轉 s3 s.swapcase print s3 每個隔開 特殊字元或數字 的單詞首字母大寫 s alex ...

python第三課答案 python第三課筆記

以下哪個變數的命名不正確?為什麼?a mm 520 b mm520 c 520 mm d 520 mm 答 c不正確,不能數字開頭 在不上機的情況下,以下 你能猜到螢幕會列印什麼內容嗎?myteacher 小甲魚 yourteacher myteacher yourteacher 黑夜 print ...

python第三課答案 python第三課

1.迴圈物件,主要呼叫next 2.迭代器iterator 在理解上可以和迴圈物件理解為乙個東西。3.生成器 generator 自定義的迴圈物件。4.表推導 list comprehension 是快速生成表的方法。表推導用中括號。l x 2 for x in range 10 練習 f open...