如何从可执行文件中调用bpl中的Delphi函数?

前端之家收集整理的这篇文章主要介绍了如何从可执行文件中调用bpl中的Delphi函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Delphi应用程序,我编写了一个相当简单的包装器.exe for.

基本上,有一个dll有一堆函数,其中一个我会在我的包装器完成所需的操作后迭代调用.我无法控制这个dll文件,也永远不会.

好吧,现在这个DLL是BPL,我不知道如何在该文件调用函数.提前致谢.

解决方法

使用包中函数的简单方法是“使用”包含该函数的单元,像往常一样调用它,并将包放在项目运行时包的列表中.要做到这一点,有一些要求:

>您的项目必须使用与编译程序包相同的Delphi版本.
>您必须有权访问设备的DCU文件,或至少访问该软件包的DCP文件.
>程序启动时,程序包必须存在于操作系统的搜索路径中.

如果您不能满足第三个要求,或者您不想一直加载包,那么您可以为它调用LoadPackage.实现这项工作的方法是让另一个包一直加载.它将由您的项目和要加载的包使用.中间包将公开一个接口(例如一些注册函数,变量或类),主包可以使用它来告诉应用程序它的功能是什么.您将无法直接在应用程序中“使用”主程序包的单元.

如果你不能满足前两个要求,那么就有更难的方法,如果你的应用程序不是用Delphi或C Builder编写的,那么你也需要这样做.像普通的DLL一样对待包.使用LoadLibrary加载它.使用GetProcAddress加载其Initialize函数,然后调用它. (请记住,调用约定是寄存器,而不是stdcall.)然后加载要调用函数的地址,请记住函数名称已经被修改以包含一些单元和类型信息.在调用FreeLibrary之前调用Finalize函数.检查LoadPackage和UnloadPackage的源代码;是否需要调用CheckForDuplicateUnits可能取决于您是否可以满足要求编号1.

原文链接:https://www.f2er.com/delphi/102370.html

猜你在找的Delphi相关文章