首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未能在indy10上重新编译XE2的源代码

未能在indy10上重新编译XE2的源代码
EN

Stack Overflow用户
提问于 2012-07-23 12:56:06
回答 4查看 784关注 0票数 1

the question之后,我试图修改Indy10 (IdHTTPProxyServer.pas)的源代码。但是未能重新编译indy10项目..。我的IDE是XE2,下面是我所做的步骤。

  1. 删除菜单->组件->安装包中的"Indy 10 Core Design Time“和"Indy 10 Protocols Time”
  2. 开放IndyProtocols.dpk
  3. 修改IdHTTPProxyServer.pas
  4. 编译

有时它显示错误“访问冲突在rtl160.bpl",有时它显示错误”coreide160.bpl中的异常xxx(任何组件)“

由于我对开发环境不太熟悉,我完全不明白出了什么问题。任何帮助都将不胜感激。

谢谢

谢谢你的回复。您的所有建议使我更多地认识到了发展环境。最后,我接受@Marcus Adams的回答,因为这个项目中有不止一个开发人员。最好不要更改IDE的源文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-23 14:20:38

通常,当我更改源代码时,我将修改后的源文件保存到我的项目文件夹中。那样的话,那个单位就会被重新编译。

如果更改了特定的.pas文件,只需将其保存到项目文件夹并重新编译即可。保持原始的Delphi (和Indy)源文件不动。

这也使得将来的更新变得更容易,因为您的更改不会在更新后丢失,并且您的更改不会影响其他项目。

票数 3
EN

Stack Overflow用户

发布于 2012-07-23 13:54:24

有几个VCL设计时包(与DataSnap有关)链接到绑定版本的Indy。如果要更新indy,则需要执行以下操作:

  1. 找到那些软件包(我不记得它们在我的头顶,但我会回复你),并从安装的软件包列表中删除它们。
  2. 从“已安装的软件包”列表中删除绑定的Indy包。
  3. 将绑定的Indy dcu目录重命名,这样IDE就不会对要使用的Indy dcu实例感到困惑。
  4. 重命名绑定的Indy文件,这样IDE就不会加载错误的文件。

只有到那时,您才能编译新版本的Indy。

票数 1
EN

Stack Overflow用户

发布于 2012-07-23 14:25:48

您提到的两个错误都不是编译器错误。它们不太可能是由编译器本身造成的。它们可能来自调用链中的其他地方,从而导致编译。

一个短期的解决方案是从命令行编译。MSBuild是Delphi在引擎罩下使用的构建引擎。

  1. 像往常一样编辑IDE中的任何Indy文件,保存更改,然后关闭IDE。
  2. 从“开始”菜单中打开“Rad Studio命令”提示符。这将确保将适当的环境变量设置为运行命令行生成。您还可以使用标准命令提示符并运行rsvars.bat来完成相同的任务。
  3. 使用cd将目录更改为IndyProtocols.dpk的位置
  4. msbuild IndyProtocols.dpk /target:Build /p:config=Release

如果要执行调试版本,只需将/p:config=Release更改为/p:config=Debug即可。注意,在使用msbuild时大小写很重要,因为项目文件是xml的,这是区分大小写的。

此外,出于其价值,您应该尽量避免对IDE附带的库进行直接更改。如果您在提供的库中发现了一个bug,您需要为特定的项目修复它,那么通常可以通过将违规文件复制到项目的文件夹中并在那里对其进行更改来度过难关。您还可能还需要复制其他几个依赖文件。如果采用这种方法,编译器将通知您哪些依赖项需要与错误(如Unit * was compiled with a different version of *.* )一起复制。

现在,如果您真的想调试IDE,可以尝试使用整个IDE中使用的rtlcoreide包,它们都被编译为发行版(没有调试信息),因此很难确定是什么导致了所看到的错误。

无论如何,您可以在项目管理器中加载IndyProtocols.dpk来运行IDE的第二个实例。然后使用来自第一个IDE实例的Run > Attach to Process将调试器附加到第二个IDE实例。之后,只需尝试从第二个IDE实例构建IndyProtocols.dpk。如果一切按预期进行,调试器将捕获错误,并让您在它们发生的地方中断,这样您就可以四处挖掘。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11612978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档