YGYL 发表于 2023-4-24 16:49:13

sqlite启动报错问题的详解及解决(2023 win11)_SQLite_Startup


我是win11系统,今天用autoit时发生_SQLite_Startup报错【SQLite Error    SQLite.dll Can't be Loaded!】,我的版本是3.3.16.0
比如运行help帮助文档中_SQLite_GetTable2D 的例程,就会报错
我看了一下官方论坛和中文论坛,遇到这问题人应该也不少,不过貌似还没人根本的说清楚这个问题

我简单看了一下流程,基本上这么几方面的原因:

1.最关键的还是官方自带的UDF SQLite.au3有问题
SQLite.au3 中_SQLite_Startup()函数 第3个参数 iForceLocal 强制使用本地dll,iForceLocal为0时 会从au3官方下载并使用官方的dll
iForceLocal默认为0,既不指定就从官网下载,而这个功能貌似是瘫痪的,__SQLite_GetDownloadedPath 中的 __SQLite_Inline_Version其实已经没有了。

2.当然我们有一个途径 手动下载,https://www.autoitscript.com/autoit3/pkgmgr/sqlite/
手动下载sqlite3.dll、sqlite3.exe、sqlite3_x64.dll、update.dat,放到C:\Users\admin...\AppData\Local\AutoIt v3\SQLite能解决问题吗?答案是不能的~~
首先pkgmgr/sqlite也没有及时更新相应的版本文件
程序会按网上的文件名来找,比如sqlite3_302800000.dll,显示是对不上的~
所以要关闭网上下载的功能,第3个参数设置为1,然后将文件放到你程序目录下,比较稳妥

3.然后你可能发现 还是报错,而根源是来自于系统是否是64位,还有autoit是否默认运行在x64模式下
一般而言,安装autoit时,安装程序是推荐x32安装的,所以就算你用64位的dll,autoit按32位来跑,还是会报错的
#AutoIt3Wrapper_UseX64=n   这个不是乱加的,有的时候我们反而要=y
autoit以64位跑的时候,_SQLite_Startup会为sqlite3加上_x64的后缀,如果文件名没_x64也是不行的

当然我们也可以去sqlite官网下2023年最新的版本,对应 SQLite version 3.41.2.
https://www.sqlite.org/download.html
那么这里就特别要注意x64和x32,与他们的后缀问题,当然两个一起放,也是一个无脑的办法。

暂时就想到这么多……不到位的地方,请大家多指点

zdphj 发表于 2023-4-25 10:26:20

用较老的版半,会有这个问题吗?

YGYL 发表于 2023-4-29 11:37:54

zdphj 发表于 2023-4-25 10:26
用较老的版半,会有这个问题吗?

你试试例程就知道了
页: [1]
查看完整版本: sqlite启动报错问题的详解及解决(2023 win11)_SQLite_Startup