Fab*_*zio 4 ide delphi bpl package
我正在测试Delphi 2007,我的groupproject由2个包组成.
PackageRun.bpl
它被标记为"仅运行时",并包含一个名为"uMyTestRun.pas"的单元,其中定义了一个空的TFrame后代:
unit uMyTestRun;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TMyTest = class(TFrame)
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
end.
Run Code Online (Sandbox Code Playgroud)
PackageDes.bpl
它需要PackageRun.bpl,它被标记为"仅设计时间"并包含一个名为"uMyTestDes.pas"的单元,其中我编写了以下代码:
unit uMyTestDes;
interface
uses
Classes,
uMyTestRun;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyComponents', [TMyTest]);
end;
end.
Run Code Online (Sandbox Code Playgroud)
两个包的输出目录都在库路径中(里面有bpl,dcp和dcu).
尝试安装PackageDes.bpl(组件,安装包...,添加...),我收到以下错误:
无法加载包C:\ <...>\PackageDes.bpl.Impossibile trovare il modulo specificato.
消息的最后部分是用我的操作系统的语言,用英语说它应该是"找不到指定的模块".(我的操作系统是Windows 10 Pro 64位).
PackageDes.bpl与错误消息(C:\ <...>\PackageDes.bpl)中显示的路径完全相同.经过一些测试,我发现从uMyTestDes.pas单元中删除以下行后错误消失了:
RegisterComponents('MyComponents', [TMyTest]);
Run Code Online (Sandbox Code Playgroud)
我的代码/项目/环境有什么问题吗?
从http://SysInternals.com运行Process Monitor 并设置过滤器以仅拦截Delphi IDE进程的文件操作(最右边的工具栏按钮)(检查TaskManager中的进程名称或快捷方式属性(对于Delphi XE2,它是bds.exe) ,然后添加类似于Include/Process Name/Ends With/bds.exe的过滤器.
然后清除PM中的登录,切换到Delphi并尝试加载包,然后一旦出现错误,切换回PM并停止捕获事件.尽可能快地尝试,例如不要浪费时间关闭错误框.
现在您将获得Delphi的文件I/O活动的痕迹,加载您的包(以及一些其他背景活动噪音 - 您执行的噪音越快,噪音越小).在该跟踪中查找所有错误,并查看Delphi尝试查找的位置和包.
如果您的Design-Time BPL具有可解析的所有DLL依赖性树,您还可以尝试使用Microsoft Dependency Walker或类似工具.我个人通常使用Unreal/Total commander和FileInfo插件或ntCore CFF Explorer.
| 归档时间: |
|
| 查看次数: |
5162 次 |
| 最近记录: |