为什么编译器无法加载库名dbexpint.dll?

时间:2018-03-02 17:05:18

标签: delphi dll firebird delphi-10.2-tokyo

我是新用户o 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:\dados\database\XXXXXXXXXXXX.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错误:无法正确初始化驱动程序。客户端库可能丢失,安装不正确,版本错误,或者系统路径中可能缺少驱动程序。

我不知道什么是错的以及我如何解决它。拜托,你们能帮助我吗?

2 个答案:

答案 0 :(得分:2)

dbexpint.dll是来自Delphi 6 to Delphi 2005的(旧)Delphi版本的dbExpress Interbase驱动程序。它也可用于连接Firebird数据库,而较新的Delphi版本则为每个数据库使用单独的驱动程序。

此驱动程序 与Delphi版本2006及更高版本兼容。相反,Delphi 10.2现在使用dbxint.dll用于Interbasedbxfb.dll用于Firebird

dbxfb.dll的参数类似于dbexpint.dll的参数。

如果您创建新表单,请在其上放置TSQLConnection并选择FBConnection作为ConnectionName属性的值,然后将自动分配Driver属性使用所需的值FirebirdParams属性也将填充适当的值:

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文件相同的文件夹中。

答案 1 :(得分:0)

谢谢大家的帮助。

我找到了解决错误的方法:

实际上dbexpint.dll驱动程序仅适用于较旧版本的Delphi。当前驱动程序是dbxfb.dll,用于连接Firebird数据库。

首先,我更改了以下代码行。

  SQLSpiridonConnection.Params.Clear;
  SQLSpiridonConnection.Params.Values['DatabaseServer'] := 'Firebird';
  SQLSpiridonConnection.Params.Values['Database']       := 'xxxxxxxxxxxxx:f:\dados\database\xxxxxxxxxx.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安装文件夹中。

Ex:C:\ Program Files(x86)\ Embarcadero \ Studio \ 19.0 \ bin

OBS:@DavidHeffernan是的我已经问了这个问题,谢谢你的评论