在the question之后,我试图修改Indy10 (IdHTTPProxyServer.pas)的源代码。但是未能重新编译indy10项目..。我的IDE是XE2,下面是我所做的步骤。
有时它显示错误“访问冲突在rtl160.bpl",有时它显示错误”coreide160.bpl中的异常xxx(任何组件)“
由于我对开发环境不太熟悉,我完全不明白出了什么问题。任何帮助都将不胜感激。
谢谢
谢谢你的回复。您的所有建议使我更多地认识到了发展环境。最后,我接受@Marcus Adams的回答,因为这个项目中有不止一个开发人员。最好不要更改IDE的源文件。
发布于 2012-07-23 14:20:38
通常,当我更改源代码时,我将修改后的源文件保存到我的项目文件夹中。那样的话,那个单位就会被重新编译。
如果更改了特定的.pas文件,只需将其保存到项目文件夹并重新编译即可。保持原始的Delphi (和Indy)源文件不动。
这也使得将来的更新变得更容易,因为您的更改不会在更新后丢失,并且您的更改不会影响其他项目。
发布于 2012-07-23 13:54:24
有几个VCL设计时包(与DataSnap有关)链接到绑定版本的Indy。如果要更新indy,则需要执行以下操作:
只有到那时,您才能编译新版本的Indy。
发布于 2012-07-23 14:25:48
您提到的两个错误都不是编译器错误。它们不太可能是由编译器本身造成的。它们可能来自调用链中的其他地方,从而导致编译。
一个短期的解决方案是从命令行编译。MSBuild是Delphi在引擎罩下使用的构建引擎。
cd
将目录更改为IndyProtocols.dpk的位置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中使用的rtl
和coreide
包,它们都被编译为发行版(没有调试信息),因此很难确定是什么导致了所看到的错误。
无论如何,您可以在项目管理器中加载IndyProtocols.dpk来运行IDE的第二个实例。然后使用来自第一个IDE实例的Run > Attach to Process
将调试器附加到第二个IDE实例。之后,只需尝试从第二个IDE实例构建IndyProtocols.dpk。如果一切按预期进行,调试器将捕获错误,并让您在它们发生的地方中断,这样您就可以四处挖掘。
https://stackoverflow.com/questions/11612978
复制相似问题