我sqlite3.dll
在Delphi应用程序中找不到错误。我的PC上已经有sqlite3.dll文件,该文件位于E://sqlite-dll-win32-x86-3071700
我的资料如下
procedure TForm2.Button1Click(Sender: TObject);
var
Results: TDataSet;
begin
SQLConnection1.Params.Add('Database=E://empn.s3db');
SQLConnection1.LibraryName := 'E://sqlite-dll-win32-x86-3071700/sqlite3.dll';
try
SQLConnection1.Connected := true;
SQLMonitor1.Active := True;
SQLConnection1.Execute('Selct * from usergroup', nil, Results)
finally
end;
end;
正如上面提到的,代码已经指出了到库的路径
SQLConnection1.LibraryName := 'E://sqlite-dll-win32-x86-3071700/sqlite3.dll';
但是我仍然得到找不到sqlite3.dll之类的错误。如何解决此错误?
从Delphi XE3开始,LibraryName
已经过时了。
在较早的Delphi版本中,LibraryName指示“与驱动程序关联的dbExpress库”(例如Firebird的dbxfb.dll),而VendorLib指示“数据库供应商提供的支持客户端对数据库使用的库”(例如fbclient。 Firefox的dll / fbembed.dll,相当于Sqlite的sqlite3.dll)。
在Windows上,此驱动程序使用sqlite3.dll的延迟加载。就像是:
function sqlite3_open_v2; external 'sqlite3.dll' delayed;
因此dll会加载LoadLibrary,并采用标准搜索策略来查找模块(首先是进程目录,然后是通常的路径列表)。
但是,可以使用SetDllDirectory更改此策略。
因此,您必须通过路径将sqlite3.dll设置为可访问或尝试以下破解:
(请注意,这将干扰使用SetDllDirectory的其他代码;请参阅David Heffernan的评论)
SetDllDirectory('E:\sqlite-dll-win32-x86-3071700');
try
SQLConnection1.Open;
finally
SetDllDirectory(''); // restore default search order
end;
警告:还请确保不要混合使用32位和64位模块(即32位exe和64位dll,反之亦然)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句