当WIN64中的单元使用DesignEditor DesignIntf时,如何为其构建delphi项目?

当WIN64中的单元使用DesignEditor DesignIntf时,如何为其构建delphi项目?,delphi,delphi-5,delphi-xe7,Delphi,Delphi 5,Delphi Xe7,我正在尝试将一些代码从Delphi5迁移到DelphiXe7-WIN64。由于IDE是32位应用程序,因此场景是DesignEditor仅为32位。我正在迁移的项目具有包含DesignEditors或DesignIntf或两者的uses子句的单元 将-LUDesignIDE放入构建配置>编辑>Delphi编译器>编译>传递给编译器的附加选项>-LUDesignIDE 将以下内容作为生成时的第一个错误 [dcc64致命错误]E2202未找到所需的程序包“DesignIDE” 我使用的是Delphi

我正在尝试将一些代码从Delphi5迁移到DelphiXe7-WIN64。由于IDE是32位应用程序,因此场景是DesignEditor仅为32位。我正在迁移的项目具有包含DesignEditors或DesignIntf或两者的uses子句的单元

-LUDesignIDE
放入构建配置>编辑>Delphi编译器>编译>传递给编译器的附加选项>-LUDesignIDE

将以下内容作为生成时的第一个错误

[dcc64致命错误]E2202未找到所需的程序包“DesignIDE”


我使用的是Delphi XE7试用版。

听起来您有一个包,它将两者结合在一起。但是,在大多数情况下,您必须。一个包是运行时(在其中实现所有实际库),另一个包是设计时(将库公开给IDE)

也就是说,设计时包必须直接与DelphiIDE一起工作。DelphiIDE是32位的,因此设计时包也必须是32位的。然而,您的运行时包将支持所需的任何平台。设计时包只负责将组件、属性编辑器等注册到IDE

任何与IDE有关的内容(如注册组件、注册属性编辑器等)都必须在您的设计时包中,该包只有32位。由于法律版权问题,所有设计时实现必须位于设计时包中,与运行时包分开

首先创建一个新的仅设计时包,名称相同,但前缀为
DCL
。然后,将原始包更改为仅运行时。现在在新的仅设计时软件包中创建一个新单元。该单元将专门用于注册所有IDE设计时交互。运行时包中依赖于这些设计时单位的所有内容都必须转换为此设计时包。这些您找不到的单元仅与32位Delphi IDE兼容


新的仅设计时软件包将需要您的运行时软件包。在编译设计时包之前,必须先编译运行时包。任何时候,对库进行更改时,都需要1)重新编译运行时软件包,2)重新编译设计时软件包,以及3)重新安装设计时软件包。

ToolsAPI单元可以包含在Win32设计时软件包中,而不包括在其他任何地方。您正试图将它们包含在Win64可执行项目中。这是不允许的


解决方案是从项目中删除所有ToolsAPI单元

如果我的项目没有组成一个包,我该怎么做?我告诉你,你需要把你的包一分为二。没有别的办法了。这样做没有简单的选择。您需要研究这个主题,并根据您的包的实现方式采取行动。本质上,您的
寄存器
过程需要位于仅设计时的包中。@AEonAX:您提到的所有类都是设计时类,因此只能由设计时代码使用。它们与在运行时代码中使用无关。无论您在运行时使用它们做什么,都是错误的。必须将设计时逻辑与运行时逻辑分开。没有其他选择。如果你想帮助重新设计你的代码,你需要展示实际的代码。“如果我的项目没有生成一个包,我该如何继续?”-现在我重新阅读了你的问题,你没有提到包,而事实上你正在使用包。您使用的单位仅为设计单位,这表明您的项目也必须是支持设计时交互的包。换句话说,使用这些设计时单位的单位必须位于设计时包中。必须将使用任何设计时单位的现有单位迁移到仅限设计的包中。现在包裹有两种。。。运行时和设计时。