当内部单元使用DesignEditors DesignIntf​​时,如何为WIN64构建delphi项目?

AEo*_*nAX 2 delphi delphi-5 delphi-xe7

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

-LUDesignIDE在生成配置>编辑> Delphi编译器>编译>其他选项传递到编译器> -LUDesignIDE

提供以下内容作为构建的第一个错误

[dcc64 Fatal Error] E2202 Required package 'DesignIDE' not found

我使用的是Delphi XE7试用版.

Jer*_*dge 7

听起来你有一个设计时运行时组合在一起的软件包.但是,在大多数情况下,您必须将包拆分为两个不同的包.一个包是运行时(实现所有实际库),另一个是设计时(将库暴露给IDE).

话虽这么说,设计时包必须直接使用Delphi IDE.Delphi IDE是32位,因此设计时包也必须是32位.然而,您的运行时包将支持所需的任何平台.您的设计时包仅负责向IDE注册组件,属性编辑器等.

这有什么用IDE(如注册组件,注册属性编辑器等),仍必须在你的设计时包里面只有32位.由于合法的版权问题,所有设计时实现必须在设计时包中,与运行时包分开.

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

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

  • @AEonAX:你提到的所有类都是**设计时**类,因此只能由**设计时**代码使用.他们没有在**运行时**代码中使用任何业务.无论你在运行时使用它们都是错误的**.您必须**必须将您的设计时逻辑与运行时逻辑分开.没有其他选择.如果您需要帮助重新设计代码,则需要显示实际代码. (2认同)