一、安装SQLIte3static
从网上找到的方法:
https://stackoverflow.com/questions/37912845/static-link-sqlite-in-lazarus
安装包下载:
https://icculus.org/%7Ekfitzner/misc/sqlite3staticconnection_050.zip
下载后安装sqlite3static.lpk
我修改了sqlite3static.lpk libsqlite3.a文件的默认目录
从网上找到的方法:
https://stackoverflow.com/questions/37912845/static-link-sqlite-in-lazarus
安装包下载:
https://icculus.org/%7Ekfitzner/misc/sqlite3staticconnection_050.zip
下载后安装sqlite3static.lpk
我修改了sqlite3static.lpk libsqlite3.a文件的默认目录
自行编译SQLite3的libsqlite3.a文件,将libsqlite3.a文件放入对应目录,我将编译的libsqlite3.a放在staticlib目录,用上面的安装包应将libsqlite.a放lib目录。
自行编译libsqlite3.a可以参照:
mingw64编译sqlite3.dll - 秋·风 - 博客园
二、使用方法
使用方法和原来的一样,将原来的TSQLite3Connection替换为TSQLite3StaticConnection,在uses添加sqlite3staticconnection单元,并添加依赖包sqlite3static。
简单的示例:
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; // 创建存储表 SQLConn.ExecuteDirect( 'CREATE TABLE embeddings('+ 'id INTEGER PRIMARY KEY AUTOINCREMENT,'+ 'text TEXT NOT NULL,'+ 'vector BLOB NOT NULL,'+ // 二进制存储浮点数组 'timestamp DATETIME DEFAULT CURRENT_TIMESTAMP);' ); SQLTrans.Commit; finally SQLConn.Free; SQLTrans.Free; end; end; end;
编译后的应用不需带sqlite3.dll或libsqlite3.so文件。
这个方法在win64/aarch64测试通过。