我有一个使用Delphi编写的应用程序,为其编写了一个相当简单的包装器.exe。
基本上,有一个dll文件其中包含一堆函数,其中一个函数在我的包装器完成所需操作后会被迭代地调用。我无法控制这个DLL文件,并且永远不会有此权限。
现在,这个DLL已经成为了一个BPL文件,我不确定如何调用其中的函数。提前感谢。
LoadPackage
。使其工作的方法是拥有另一个始终被加载的包。它将被您的项目和您希望加载的包同时使用。中间包将公开一个接口(例如一些注册函数、变量或类),主包可以使用该接口告诉应用程序其功能是什么。您将无法直接在应用程序中“使用”主包的单元。LoadLibrary
加载它。使用GetProcAddress
加载其Initialize
函数,然后调用它。(请记住,调用约定是register
,而不是stdcall
。)然后加载您想要调用的函数的地址,注意函数名称已被编码以包括一些单元和类型信息。在调用FreeLibrary
之前调用Finalize
函数。检查LoadPackage
和UnloadPackage
的源代码;是否需要调用CheckForDuplicateUnits
可能取决于您是否能够满足第1个要求。BPL(包装式库)只是在DLL基础上增加了一些特定的功能。您应该可以像使用DLL一样轻松调用其中的函数,但有一个特殊的注意事项:BPL必须使用与您所使用的Delphi版本相同的版本进行构建。如果您没有源代码,则这可能是一个主要的缺点。如果这对您造成了问题,您应该与创建者联系并请求将其转换回DLL。