问题标签 [bpl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1790 浏览

delphi - 从 BPL 函数返回字符串

有一个从 BPL 导出的函数,简化如下

它使用 LoadPackage 和 GetProcAddress 从主程序加载,它适用于其他功能。但这一个在调用时会带来很多错误;

BPL 与(简化)一起使用

.

似乎在过程结束时发生的异常,但更正后的文本返回到 intoStr (用断点查看)

错误是否与作为 var 和/或字符串的 Info 参数有关?

错误消息是

Project Project1.exe 引发异常类 EInvalidPointer,并带有消息“无效指针操作”

谢谢

更多信息> 来自同一 bpl/unit 的另一个函数工作正常

疯狂除外>

异常类:EInvalidPointer 异常消息:无效的指针操作。

主线程 ($1b7c): 0040276f +013 Project1.exe System @FreeMem 00404650 +01c Project1.exe System @LStrClr 00483814 +15c Project1.exe Unit1 97 +11 TForm1.Button3Click 00462430 +064 Project1.exe Controls TControl.Click 0045a870 + 01c Project1.exe StdCtrls TButton.Click

0 投票
6 回答
5943 浏览

delphi - 使用 BPL 加载 Delphi 对象运行时

我在一个单元有一个班。通常,当我更改其方法的算法时,我必须重新编译它并将补丁作为一个整体交付。我认为使用 DLL 创建类的实例。在delphi.about.com上搜索后,发现不用DLL,可以用BPL。它是 Delphi 的 DLL。问题是我发现的几乎所有示例都只是告诉如何导出函数。我想动态加载BPL,每当我替换BPL时,我都可以获得类的最新算法,而不仅仅是我导出的函数。

我读过的文章:
- http://delphi.about.com/od/objectpascalide/a/bpl_vs_dll.htm
- Delphi 应用程序的插件系统 - bpl vs dll?
- http://delphi.about.com/library/weekly/aa012301a.htm

非常感谢任何如何从头开始创建 BPL 以封装组件或类的 URL 或 SAMPLE。


亲爱的大师,

假设我有这样的代码:

我想导出A的所有公共方法。如何使其成为DLL?如何使用它从另一个单元导入它?比方说:

A 未在单元中声明(它在 DLL 中)。请指教。


欢呼。我昨晚收到了。我所要做的就是使对象实现一个接口,该接口在调用者单元中用于捕获 DLL 返回的对象实例。

谢谢你们。

0 投票
1 回答
8060 浏览

delphi - rtl100.bpl 没有找到?

我正在从 TMS 学习一个组件。我得到“...rtl100.bpl 未找到...”。如果我使用包含“rtl”的“使用运行时包构建”,可能会发生此错误。

rtl100.bpl 在哪里(我使用的是 D2007)?我应该怎么做才能修复这个错误?

0 投票
5 回答
3813 浏览

delphi - Delphi 插件框架

我想设计 Delphi 插件框架。共有三个选项:
1. DLL
2. BPL
3. COM 接口

每个选项都有一些缺点。

DLL - MDI 应用程序出现问题,来自插件的表单无法嵌入到主机 exe - mdi 应用程序。
BPL - 每个 *.bpl 插件和 *.exe 主机应用程序必须使用相同版本的 Delphi 编译。
COM - 接口 {xxx-xx-xxx-xx} 必须在系统中注册,(regsvr)所以插件框架不能移植!

我上面写的一切都是真的吗?如果不是,请纠正我,或者还有其他可能吗?
谢谢

0 投票
2 回答
1612 浏览

delphi - 如何在不启用使用运行时包构建的情况下使用 Delphi Dlls

最近我开始了一个有这么多表单、框架和额外控件的项目,所以我的应用程序膨胀了,我在我的项目中使用了 3 个 exe(全部在 Delphi 2009 中制作),这些应用程序也共享相同的框架和表单。所以我用 dll 来分享这些表格。

但是一个问题来了,说不同的 Tfont 错误。所以我在网上提出了答案,并给出了选择 | 使用运行时包构建然后一切都开始完美地工作

但是当我检查 Windows 任务管理器 | memusage 它是〜21 500 kb(21.5 mb)。(但没有使用运行时包构建的内存使用量仅为2000 kb,还包括通过在所有3个exe项目中手动添加帧)并且我的编译器在启用Build with时也运行缓慢运行时包

现在我必须用3 个 exes + delphi bpl 运行时包 + dll分发项目

但我想知道 memusage 是如何增加的,我只想分配3 个 exes + dll(只是如何分配正常的 delphi exes)我什至使用过内存管理器但没有用

如何克服这个问题

这是我使用的代码

在exe中

在 dll 中

最后如何在不使用运行时包构建的情况下完成所有这些

不仅仅是内存问题,只是告诉我如何在没有 buildwithruntime 包的情况下创建这样的应用程序

0 投票
1 回答
2928 浏览

delphi - 没有使用运行时包构建的 delphi exe 和 dll

对于我的上一个项目,我在我的 delphi 应用程序中使用了许多框架,所以我决定创建 dll 并将它们放入 dll 中(全部在 Delphi 中创建)

我浏览了许多网站并提出了有效的代码,但对于那个例子,我必须使用运行时包编译应用程序和 dll,这意味着我也必须分发 bpls。如果不使用运行时包检查构建错误即将到来

这是我找到的代码

在exe中

在 dll 中

就是这样,但我希望这段代码在没有运行时包的情况下工作

0 投票
1 回答
1617 浏览

delphi - 将 Tframe 从 bpl 加载到应用程序

我正在尝试在我的主应用程序中显示的 delphi 包(bpl)中加载一个 tframe,请给我包和应用程序的代码。

0 投票
2 回答
1030 浏览

delphi - 使用运行时包构建时,如何使我的程序使用更少的内存?

我总是在没有“使用运行时包构建”的情况下编译我的 delphi 应用程序,但是对于我的最新项目,我不得不使用它(因为它一天天开始膨胀)。我使用了一些第三方 VCL(带有源代码的 TMS 组件包,源代码目录也在搜索路径中),

当我使用运行时包构建编译时,整个 bpl 包由应用程序在运行时使用(否则它只将包内所需的 vcls 编译到应用程序中)所以我认为它消耗了很多 ram 内存(通常我的应用程序使用 38 Mb ram 但现在62 Mb(根据 Windows 任务管理器,不仅 tms 我还使用了许多其他 vcl)。

有什么方法可以让我的应用程序消耗低内存,就像它被编译为单个 exe 一样。

(我知道用只需要的 vcl 重新编译 VCL 包(我有源代码)但是挖掘源代码并找出所需的 vcl 和子程序太难了)

0 投票
1 回答
1225 浏览

delphi - 从包中加载框架

我在单独的三个 bpls 中有三个框架,

在我的主应用程序中,我创建了三个按钮,并且我想在单击相应按钮时动态调用框架(一次一个)(框架可以显示在任何控件中,例如:TPanal)

我已经使用 Dlls 做过这样的事情,但是 Stack overflow 社区中的一些人建议我使用 bpl(他们说这很容易), 我以前的帖子

0 投票
5 回答
6766 浏览

delphi - BPL 文件需要运行时包!

我创建了一个包,我想使用我的包的 BPL 文件...

我的包有 VCL.dcp 和 RTL.dcp 作为必需的库,我在我的应用程序中加载这个包没有任何错误,但是当我想卸载它时,显示访问冲突!

如果我使用运行时包(“vcl”和“rtl”)构建我的应用程序,则不会显示访问冲突!

替代文字

这是什么意思 ?!我的应用程序需要 VCL 和 RTL 库来加载 BPL?!我想像 DLL 文件一样加载我的包,有什么解决方案吗?

我正在使用德尔福 2010

多谢 ...