【问题标题】:Upgrading Indy10 with TMS component pack (C++ Builder)使用 TMS 组件包升级 Indy10 (C++ Builder)
【发布时间】:2012-03-16 14:11:33
【问题描述】:

到目前为止,我一直在使用 Indy 10 没有问题,但在最近安装 TMS 组件包出现问题后,我正在寻找升级 Indy 的替代方法。 TMS 在带有 CB2010 的干净系统上安装良好,但是当我使用以下过程升级 Indy 时,在启动 IDE 时以及在 TMS 安装后立即出现错误 - 错误是:The procedure entry point @Idhttp@TidCustomHTTP@GetRequestHeaders$qqrv could not be located in the dynamic link library IndyProtocols140.bpl。显然我这边有一些问题,因为 TMS 确实在没有 Indy 升级的情况下安装干净安装。

因此,如果我用较新的版本覆盖 Indy 文件,它可能会正确安装。

这是我现在使用的 Indy 升级的安装过程(在安装 TMS 之前一直有效):

  1. 启动 IDE 并删除 Indy10 Protocols Design TimeIndy10 Core Design Time

  2. 运行删除旧 Indy 文件的脚本:

    del /q "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\Indy10\*.*"
    del /q "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\Indy10\*.*"
    del /q "c:\Program Files\Embarcadero\RAD Studio\7.0\include\Indy10\*.*"
    del /q /s "c:\Program Files\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\*.*"
    
    
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyCore.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyCore.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyProtocols.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyProtocols.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndySystem.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndySystem.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyCore.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyCore.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyProtocols.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyProtocols.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndySystem.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndySystem.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\IndyCore140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\IndyProtocols140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\IndySystem140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\dclIndyCore140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\dclIndyProtocols140.bpl"
    
  3. 在“c:\code\indy”中解压新的 Indy 安装,并按顺序打开 IndySystem140.dpkIndyCore140.dpkIndyProtocols140.dpkdclIndyCore140.dpkdclIndyProtocols140.dpk

    李>
  4. 将上述每个包的编译选项修改为Generate all C++ Builder files (including package libs)

  5. 将所有包设置为Release并按上述顺序构建它们。

  6. 同时安装最后两个

  7. 将包含和库路径添加到“c:\code\indy\Core”(对于协议和系统也是如此)

我还弄乱了 Indy 附带的 FullC140.bat 脚本,但没有像上面那样正确安装它。

有没有人成功更新过 Indy 并在上面安装了 TMS?

我的批处理脚本是否删除了一些它不应该删除的文件?

【问题讨论】:

  • 对于 C++ Builder,我建议使用 Malcolm Smith 的 pre-built downloads Indy 10
  • 是的,我也考虑过这一点,而且我看到脚本 FullC140 甚至是由 Malcolm Smith 编写的,但这对我来说不是选项,因为我需要在编译之前对 Indy 进行一些小修改(对 IdAllHeaderCoders.pas 的一个小改动,它修复了另一个问题 :) 此外,Malcolm 不会经常更新这些文件(上次更新是 2 个月前,如果您真正需要的修复程序没有在 1 天前签入,那很好!)。

标签: installation c++builder indy10 tms


【解决方案1】:

编译出错的 TMS 包以链接到与 IDE 一起预安装的 Indy 包。由于 Indy 的 IdHTTP.pas 单元中的接口更改(具体而言,TIdCustomHTTPGetRequestHeaders() 方法已重命名为 GetRequest()),您的 Indy 升级会破坏该 TMS 包。要解决该错误,必须重新编译失败的 TMS 包以链接到升级的 Indy 包,或者您必须恢复 IdHTTP.pas 中的更改并重新编译 Indy。

【讨论】:

  • 实际上 TMS 作者说他们不使用 Indy。但我刚刚发现 dclDataSnapIndy10 包需要这个调用。当我从 IDE 中删除这个包时,错误就消失了。这个包链接到以前安装的 Indy,它已被删除和更新。 dclDataSnapIndy10 有什么用? TMS 和 DataSnapIndy10 的安装以某种方式连接...
  • Indy官网安装页面已经提到DataSnap在升级Indy 10时损坏的评论:indyproject.org/Sockets/Docs/Indy10Installation.EN.aspx
  • 谢谢,我只是删除了 DataSnap,因为我不需要它,但希望 TMS 不会依赖它,可能是安装包中的故障。希望这可以帮助安装 TMS 的人使用更新的 Indy10。
  • 至少一些 TMS TPlanner 插件确实引用了原始 Indy,如果您已经构建了一个包来使用它们,则必须按照 Remy 所说的重新编译它。我刚刚发现了。
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 2011-02-21
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多