RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 875787
Accepted
Konstantin78
Konstantin78
Asked:2020-08-31 18:55:12 +0000 UTC2020-08-31 18:55:12 +0000 UTC 2020-08-31 18:55:12 +0000 UTC

我遇到了“gds32.dll”、Firebird3 和 Delphi10.2 的问题

  • 772

我的程序(DB)(由Delphi7 编写)在Firebird下工作。在 PC 上还有Delphi10.2(带有它的Client InterBase)。
该程序使用“ IBBackupService1 ”组件,该组件使用“ GetNextLine 方法”。
一段时间以来,此方法一直在抛出错误:

“…… 异常类 EIBInterBaseError 与消息“不可用的数据库未知 ISC 错误 336330835”

我读到这是由于gds32.dll程序错误拾取。没错,我的 PC 上已经有4 个“ gds32.dll ”库,大小不一,见图。在此处输入图像描述

是的,在这台 PC 上,我安装或卸载了FB。(而且我在system32中只有FB的“ gds32.dll ” )

在另一台只有FB和一个“ gds32.dll ”的PC上(我删除了所有额外的“ gds32.dll ”,曾经还有InterBase),没有这样的问题。我现在在Delphi10.2中需要什么来拆除“ Client InterBase ”?

是的,我还为 Delphi7 更新了“IBXDP705.EXE”和“IBXDP708.EXE”——但那是很久以前的事了。

windows
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    Anton Shchyrov
    2020-08-31T19:11:31Z2020-08-31T19:11:31Z

    您描述的情况称为DLL Hell。为避免这种情况,切勿将文件复制到 System32。

    下载时使用dll的完整路径,或者将正确版本的dll放在exe文件所在的文件夹中。

    • 2
  2. user308670
    2020-09-08T16:30:27Z2020-09-08T16:30:27Z

    1) 删除所有gds32.dll,将正确的从Firebird复制到System32。如果您不使用 Delphi xe10 上的程序与 Interbase(即 Interbase)的连接,那么它将起作用。

    2)如果Delphi 7通过FIBPlus连接,则写入工程文件

    uses 
      .. ibase...
    ...
    begin
      IBASE_DLL = 'mycollfbclient.dll'; //любое имя
    

    ...并将 Firebird 的 gds32.dll 重命名为 mycollfbclient.dll。将其放入程序目录中就足够了,或者您可以使用 System32。诚然,在不同版本的 FIBPlus 中,这可以是一个常数,也可以是一个变量。

    3) 如果您在 Delphi 7 中使用 IBX,则查看 IBASE_DLL 的 IBHeader.pas 文件。在我的 Delphi 6 中,它是一个常数。因此,要么将其修复为 var,要么直接将其名称更改为 IBHeader.pas 并尽可能重新编译。

    报告

    • 你有什么版本的火鸟

    • 你有 Delphi 7 的源代码吗?

    • 您在其中使用了哪些访问组件

    • 0
  3. Михаил Сухарев
    2020-11-26T00:04:52Z2020-11-26T00:04:52Z

    最可靠的 DLL 地狱解决方案(参见 Anton Shchyrov 的帖子)是使用清单将 Firebird 绑定到您的应用程序。尽管 DLL 加载顺序已记录在案,但将 dll 放入您的目录并不总能产生预期的效果。

    简而言之,Firebird 程序集必须位于一个单独的目录中(在应用程序 exe 文件旁边),并且其中还包含一个带有其描述的文件(文件名相当于目录名,带有 .manifest 扩展名):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <noInheritable/>
        <assemblyIdentity 
            type="win32" 
            name="Firebird.25" 
            version="2.5.8.27089" 
            processorArchitecture="x86" 
        />
        <file name="gds32.dll"/>
        <file name="ib_util.dll"/>
        <file name="icudt30.dll"/>
        <file name="icuin30.dll"/>
        <file name="icuuc30.dll"/>
    </assembly>
    

    接下来,应用程序准备自己的清单文件,其中包含程序集的指示(您可以将其存储在任何地方 - 该文件将作为资源包含在 exe 文件中):

    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Firebird.25' version='2.5.8.27089' processorArchitecture='x86' />
        </dependentAssembly>
      </dependency>
    </assembly>
    

    应用程序清单文件必须在项目设置的“应用程序 -> 清单”部分中指定。现在,当应用程序尝试加载 gds23.dll 库时,它总是从本地程序集中获取。如果 exe 文件旁边没有程序集,则应用程序将无法启动。

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5