为什么编译器无法加载库名dbexpint.dll?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么编译器无法加载库名dbexpint.dll?相关的知识,希望对你有一定的参考价值。
我是Delphi 10.2东京(试用版)的新用户,当我编译程序源代码时出现此错误消息:
无法加载dbexpint.dll(ErrorCode 126)。它可能在系统路径中丢失。
此代码应访问Firebird数据库,我的计算机上安装了Firebird Client 3.0。在安装文件夹里面我有DLL:
- FBCLIENT.DLL
- msvcp100.dll
- MSVCR100.DLL
以下是源代码的一部分。
unit uDataModule;
interface
uses
SysUtils, Classes, DBXCommon, DB, DBClient, SimpleDS, SqlExpr, FMTBcd,
ADODB, Data.DBXInterBase, Data.DBXOracle;
...
procedure TDM.DataModuleCreate(Sender: TObject);
var
strPath: String;
begin
//Conex?o Firebird SPIRIDON
SQLSpiridonConnection.Params.Clear;
SQLSpiridonConnection.Params.Values['DatabaseServer'] := 'Interbase';
SQLSpiridonConnection.Params.Values['Database'] := 'XXXXXXXXXX:f:dadosdatabaseXXXXXXXXXXXX.FDB';
SQLSpiridonConnection.Params.Values['SQLDialect'] := '3';
SQLSpiridonConnection.Params.Values['DriverName'] := 'Interbase';
SQLSpiridonConnection.Params.Values['VendorLib'] := 'gds32.dll';
SQLSpiridonConnection.Params.Values['User_Name'] := 'XXXXXXXX';
SQLSpiridonConnection.Params.Values['Password'] := 'XXXXXXXX';
SQLSpiridonConnection.Params.Values['LibraryName'] := 'dbexpint.dll';
SQLSpiridonConnection.Params.Values['GetDriverFunc'] :=
'getSQLDriverINTERBASE';
SQLSpiridonConnection.Connected:= True;
- 我试图下载DLL并将其放在system32和wow64文件夹中,但它没有效果。
- 我尝试将引用从库名称行更改为dbxint.dll,但出现以下错误:
DBX错误:无法正确初始化驱动程序。客户端库可能丢失,安装不正确,版本错误,或者系统路径中可能缺少驱动程序。
我不知道什么是错的,我怎么能解决它。拜托,你们能帮助我吗?
dbexpint.dll
是Delphi 6 to Delphi 2005的(旧)Delphi版本的dbExpress Interbase驱动程序。它也可用于连接Firebird数据库,而较新的Delphi版本则为每个数据库使用单独的驱动程序。
此驱动程序与Delphi版本2006及更高版本不兼容。相反,Delphi 10.2现在使用dbxint.dll
用于Interbase,而dbxfb.dll
用于Firebird。
dbxfb.dll
的参数类似于dbexpint.dll
的参数。
如果您创建一个新表单,在其上放置一个TSQLConnection并选择FBConnection
作为ConnectionName
属性的值,那么Driver
属性将自动分配所需的值Firebird
,并且Params
属性也将填充适当的值:
object SQLConnection1: TSQLConnection
ConnectionName = 'FBConnection'
DriverName = 'Firebird'
Params.Strings = (
'DriverName=Firebird'
'Database=database.fdb'
'RoleName=RoleName'
'User_Name=sysdba'
'Password=masterkey'
'ServerCharSet='
'SQLDialect=3'
'ErrorResourceFile='
'LocaleCode=0000'
'BlobSize=-1'
'CommitRetain=False'
'WaitOnLocks=True'
'IsolationLevel=ReadCommitted'
'Trim Char=False')
Left = 312
Top = 172
end
注意:正如@DavidHeffernan在评论中所提到的,不要将DLL放入系统目录中。最好将它放在与exe文件相同的文件夹中。
谢谢大家的帮助。
我找到了修复错误的方法:
实际上dbexpint.dll驱动程序只适用于较旧版本的Delphi。当前驱动程序是dbxfb.dll,用于连接Firebird数据库。
首先,我更改了代码行,如下所示。
SQLSpiridonConnection.Params.Clear;
SQLSpiridonConnection.Params.Values['DatabaseServer'] := 'Firebird';
SQLSpiridonConnection.Params.Values['Database'] := 'xxxxxxxxxxxxx:f:dadosdatabasexxxxxxxxxx.FDB';
SQLSpiridonConnection.Params.Values['SQLDialect'] := '3';
SQLSpiridonConnection.Params.Values['DriverName'] := 'Firebird';
SQLSpiridonConnection.Params.Values['VendorLib'] := 'fbclient.dll';
SQLSpiridonConnection.Params.Values['User_Name'] := 'SYSDBA';
SQLSpiridonConnection.Params.Values['Password'] := 'xxxxxxx';
SQLSpiridonConnection.Params.Values['LibraryName'] := 'dbxfb.dll';
SQLSpiridonConnection.Params.Values['GetDriverFunc'] := 'getSQLDriverINTERBASE';
SQLSpiridonConnection.Connected:= True;
之后,我将这些dll插入到Firebird安装文件夹中。
- borlndmm.dll
- dbxfb.dll
- MIDAS.DLL
- fbclient.dll这个dll已经安装在该文件夹中
其他dll在delphi安装文件夹中。
例如:C: Program Files(x86) Embarcadero Studio 19.0 bin
OBS:@DavidHeffernan是的我已经问了这个问题,谢谢你的评论
以上是关于为什么编译器无法加载库名dbexpint.dll?的主要内容,如果未能解决你的问题,请参考以下文章
无法加载JIT编译器(CLR.DLL):文件可能丢失或损坏,请重新检查或重新安装,请问这个问题怎么解决!