簡體   English   中英

為什么編譯器無法加載庫名稱dbexpint.dll?

[英]Why the compiler is unable to load the library name dbexpint.dll?

我是Delphi 10.2 Tokyo(試用版)的新用戶,在我編譯程序源代碼時出現此錯誤消息:

無法加載dbexpint.dll(錯誤代碼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錯誤:無法正確初始化驅動程序。 客戶端庫可能缺少錯誤版本或沒有正確安裝的錯誤版本,或者系統路徑中可能缺少驅動程序。

我不知道怎么了以及如何解決。 拜托,你們能幫我嗎?

dbexpint.dll是dbExpress Interbase驅動程序,用於從Delphi 6到Delphi 2005的 (舊)Delphi版本。 它也可以用於連接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:\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安裝文件夾中。

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

OBS:@DavidHeffernan是的,我已經問過這個問題,謝謝您的評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM