【发布时间】:2017-08-31 12:28:34
【问题描述】:
最近我开发并安装了带有自己组件的 VlControls Delphi 包。
现在,当任何机器上的任何开发人员使用其他早在 VlControls 之前就存在的一年前的 CmGUI 包并尝试构建它时,会弹出以下窗口:
为了使此软件包与其他已安装的软件包兼容,需要进行以下更改。 选择 OK 以应用这些更改并重建包。
添加 VlControls。 VlControls 包含隐式单元 TeeBlockCanvas、TeeMesh、TeeBlockEditor、TeeBlockGallery、TeeBlockClasses、TeeWater、TeeBlocks、TeeMakerConst、TeeLoadError、TeeTarga、TeeGLSLShaders、TeeViewBlock、TeeCamera、TeeMakerControl、TeePlayMP3、TeeTextureSelector、TeeMakerEditor、TeeSelectProperty、TeeClipBlock、TeePointEditor、T ,TeeObjFormat,TeeSubdivideMesh,TeePointItemEditor,TeeActionGallery,TeeSoundSelector,TeeMakerLibrary,TeeLoadBlock,TeeExtruded,TeeRoundRect,TeeMoveAnimation,TeeNumberAnimation,TeeExtrudedEditor,TeeActionAnimation,TeeBlockAnimations,TeeBlockReplacer,TeeHelix,TeeRain,TeeBlockFormat,TeePipe,TeeProperties,TeeDraw3DEditor,TeeKinematics,TeeColorPalette,TeeRevolutionEditor,TeeRevolution , TeeAnimationGallery, VCLTee.TeeAnimateEditor, TeeTerrain, TeeEdgeStyle, TeeStairs, TeeChartBlock3DEditor, TeeChartBlock, TeeChart3D。
我不知道为什么会这样,因为这两个包是完全独立的。 CmGUI 中没有包含“VlControls”字符串的文件。这两个包的共同点是 Tee 图表组件。
这种情况只发生在这个 CmGUI 包上,其他旧包完好无损。
会是什么?
我正在使用 Delphi 10。
CmGUI.dpk:
package CmGUI;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS OFF}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS OFF}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO OFF}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$IMPLICITBUILD ON}
requires
rtl,
vcl,
vclx,
dbrtl,
adortl,
tee923,
designide,
vclactnband,
dclstd,
OurPackageNumber1,
OurPackageNumber2,
vcltouch,
NxCommonRun_d10,
NxGridRun_d10,
TeePro923,
TeeUI923,
TeeImage923,
TeeGL923,
VclSmp,
vclFireDAC,
FireDACIBDriver,
FireDACPgDriver,
IndyProtocols,
NxCollectionRun_d10;
contains
//Here come units from this package only. No external units are included.
end.
VlControls.dpk:
package VlControls;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS OFF}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO OFF}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE RELEASE}
{$ENDIF IMPLICITBUILDING}
{$IMPLICITBUILD ON}
requires
rtl,
vcl,
vclimg,
vclx,
TeePro923,
TeeUI923,
Tee923,
DesignIDE,
TeeImage923,
TeeGL923,
dbrtl,
FireDAC,
FireDACCommonDriver,
FireDACCommon,
IndySystem,
IndyCore;
contains
//Here come units from this package only. No external units are included.
end.
更新
好的,我仔细查看了我的包并处理了它在编译时显示的所有警告。现在contains 部分有以下单位:
TeeBlockCanvas,
TeeChart3D,
TeeChartBlock3DEditor,
TeeAnimationGallery,
TeeColorPalette,
TeeDraw3DEditor,
TeeProperties,
TeeBlockReplacer,
TeeEdgeStyle,
TeeLoadBlock,
TeeSoundSelector,
TeeActionGallery,
TeeMakerLibrary,
TeeMakerControl,
TeeCamera,
TeePointItemEditor,
TeeSelectProperty,
TeeTextureSelector,
TeeBlockFormat,
TeeSubdivideMesh,
TeePointEditor,
TeeGLSLShaders,
TeeLoadError,
TeeChartBlock,
TeeMesh,
TeeTerrain,
TeeMakerEditor,
TeeClipBlock,
TeeMoveAnimation,
TeeActionAnimation,
TeeBlockAnimations,
TeeNumberAnimation,
TeeKinematics,
TeeBlockEditor,
TeeBlockGallery,
TeeBlockClasses,
TeeViewBlock,
TeeExtrudedEditor,
TeeHelix,
TeeRevolution,
TeeRevolutionEditor,
TeeStairs,
TeeRain,
TeeWater,
VCLTee.TeeAnimateEditor,
TeePlayMP3,
Tee3DSFormat,
TeeObjFormat,
TeeFacesBlock,
TeePipe,
TeeExtruded,
TeeRoundRect,
TeeBlocks,
TeeMakerConst,
TeeTarga;
据我了解,下一步是查看每个单元并找出它属于哪个包,然后将包名称添加到 requires 部分,从 contains 部分中删除单元名称。
如果我没有*.pas 文件,但只有*.bpl 和*.dcu,如何找出该单元属于哪个包?
【问题讨论】:
-
根据您提供的消息,该软件包依赖于这些单元。如果要删除依赖项,则需要删除引用。也许您在 requires 子句中有一个不需要存在的包?不看源头,很难明确回答
标签: delphi