2012-05-06 39 views
7

我们修改了menus.pas。如何重新编译对VCL源文件(Menus.pas)的修改?

uses ...,Controls,...; 

编译器提出了一个致命的错误:

[DCC Fatal Error] Menus.pas(*): F2051 Unit Controls was compiled with a different version of Menus.TPopupMenu

尝试:

删除所有DCU项目。

构建

构建所有

尝试添加文件到库路径导致增加数据库文件夹(从VCL太),然后

[DCC Error] jpeg.pas(872): E2065 Unsatisfied forward or external declaration: 'jpeg_save_markers'

这是一个死胡同。

删除controls.dcu(全部3)和德尔福不知道automaticaly重新编译他们,而不是报道controls.dcu丢失。

+0

IIRC,如果你从delphi的源文件中修改文件,你需要按照特定的顺序重新编译所有文件,我从来没有这样做过...... – ComputerSaysNo

+0

因此,你修改了Delphi源文件夹中的'Menus.pas' ?你需要注意的是,调试和运行时的'* .dcu'文件存储在.. \ lib目录和可选的子目录下(我目前只有手动的Delphi 2009,所以它可能稍有不同) – TLama

+0

你能也引入'controls.pas'? –

回答

11

这里是我如何处理修改VCL源文件:

  • 做一个副本在你的项目结构的文件。将文件添加到您的项目中,或者确保搜索路径找到您的修改文件。
  • 进行修改,但仅限于实现部分。如果您使用任何其他使用您正在修改的设备的设备,则无法修改接口部分。
  • 显式设置修改后的源文件顶部的编译器选项。使用默认的Delphi选项,通过在默认的vanilla项目中按CTRL + O O找到。

我猜想最后两个要点之一是什么让你绊倒。

+0

在xe中添加了一个新程序:CloseMenu。 – none

+0

@David,我是否应该添加'{$ MINSTACKSIZE $ 00004000}','{$ MAXSTACKSIZE $ 00100000}','{$ IMAGEBASE $ 00400000}'默认值?或只有默认的$ A +,B-,C +,D +,E-,F-,G +,H +,I +,J +,K-,L +,M-,N +,O +,P +,Q-,R-,S - ,T-,U-,V +,W-,X +,Y +,Z1}(Delphi 5) - 用CTRL + OO生成。 – kobik

+1

@kobik我的单位只有'{$ R-,T-,H +,X +}'。我怀疑我的项目编译选项与所有其他项目一致。添加一个完整的网站,例如'{$ A +,B-,C +,d +,E-,F-,G +,H +,I +,J +,K-,L +,M-,N +,O +,P +,Q-,R-,S-,T - ,U-,V +,W-,X +,Y +,Z 1}'。但你不需要比我想象的更多。 –

相关问题