【发布时间】:2009-12-01 19:04:46
【问题描述】:
我有一个用 Delphi 7/Windows XP 制作的 DLL,我想将它静态加载到 Windows 上的主机应用程序中(也用 Delphi 制作)。我正在使用这行代码:
procedure Prepare_HTML_Email(var MailMessage : TIdMessage;
const FileAddress, aDetail, aAlarmType : String); stdcall; external DLL_ADDRESS;
DLL_ADDRESS 必须是 DLL 所在的位置。但在这一点上,我有一个问题。宿主应用程序是一个服务,所以它在C:\WINDOWS\System32 中运行,但我想将DLL 放在另一个目录中,而不是在C:\WINDOWS\System32 中。 “external”关键字不允许跟在函数后面,它只允许一个常量表达式。那么,如何获取DLL的路径呢?
【问题讨论】:
-
请注意,将 Delphi 对象作为 DLL 参数传递通常是一个坏主意。改用包。关于加载时动态链接的所有相同建议仍然适用。
-
好的,没错...但是如果我更改了包代码,我是否需要重新编译整个应用程序,甚至是宿主应用程序?这就是我使用 DLL 的原因,因为我不想重新编译主机应用程序。也许我必须更改 PrepareEmail 程序的代码,那么,如何在不需要重新编译 Host 应用程序的情况下做到这一点???