为什么编译器无法加载库名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.dllDelphi 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?的主要内容,如果未能解决你的问题,请参考以下文章

golang编译androidso无法加载

无法加载JIT编译器(CLR.DLL):文件可能丢失或损坏,请重新检查或重新安装,请问这个问题怎么解决!

Tomcat无法编译加载class文件

C#程序在VS编译器加载时出现找不到方法,无法显示该程序窗体设计器

eclipse 错误;找不到或无法加载主类

android studio 编译C文件出错