一、安裝SQLIte3static
從網(wǎng)上找到的方法:
https://stackoverflow.com/questions/37912845/static-link-sqlite-in-lazarus
安裝包下載:
https://icculus.org/%7Ekfitzner/misc/sqlite3staticconnection_050.zip
下載后安裝sqlite3static.lpk
我修改了sqlite3static.lpk libsqlite3.a文件的默認(rèn)目錄
從網(wǎng)上找到的方法:
https://stackoverflow.com/questions/37912845/static-link-sqlite-in-lazarus
安裝包下載:
https://icculus.org/%7Ekfitzner/misc/sqlite3staticconnection_050.zip
下載后安裝sqlite3static.lpk
我修改了sqlite3static.lpk libsqlite3.a文件的默認(rèn)目錄



自行編譯SQLite3的libsqlite3.a文件,將libsqlite3.a文件放入對(duì)應(yīng)目錄,我將編譯的libsqlite3.a放在staticlib目錄,用上面的安裝包應(yīng)將libsqlite.a放lib目錄。
自行編譯libsqlite3.a可以參照:
mingw64編譯sqlite3.dll - 秋·風(fēng) - 博客園

二、使用方法
使用方法和原來的一樣,將原來的TSQLite3Connection替換為TSQLite3StaticConnection,在uses添加sqlite3staticconnection單元,并添加依賴包sqlite3static。


簡(jiǎn)單的示例:
procedure TForm1.InitDatabase; var SQLConn: TSQLite3StaticConnection ; SQLTrans: TSQLTransaction; begin if not FileExists('test.db') then begin SQLConn := TSQLite3staticConnection.Create(nil); SQLTrans := TSQLTransaction.Create(nil); try SQLConn.DatabaseName := 'test.db'; SQLConn.Transaction := SQLTrans; SQLConn.Open; // 創(chuàng)建存儲(chǔ)表 SQLConn.ExecuteDirect( 'CREATE TABLE embeddings('+ 'id INTEGER PRIMARY KEY AUTOINCREMENT,'+ 'text TEXT NOT NULL,'+ 'vector BLOB NOT NULL,'+ // 二進(jìn)制存儲(chǔ)浮點(diǎn)數(shù)組 'timestamp DATETIME DEFAULT CURRENT_TIMESTAMP);' ); SQLTrans.Commit; finally SQLConn.Free; SQLTrans.Free; end; end; end;
編譯后的應(yīng)用不需帶sqlite3.dll或libsqlite3.so文件。
這個(gè)方法在win64/aarch64測(cè)試通過。

浙公網(wǎng)安備 33010602011771號(hào)