加载Delphi包时如何抑制入口点未找到错误?

时间:2010-07-28 12:03:11

标签: delphi package

我维护一个用Delphi 6编写的程序。它使用SysUtils.LoadPackage动态加载一些bpl包文件。我经常在程序中更改导致程序包无法加载的内容。发生这种情况时,会出现一个消息框,然后抛出异常。消息框和例外是分开的。

以下是消息框的示例:

---------------------------
Connect Manager: ConnectManager.exe - Entry Point Not Found
---------------------------
The procedure entry point @Connectmanagerplugin@TConnectManagerPluginClassList@UnRegister$qqrp17System@TMetaClass could not be located in the dynamic link library ConnectManagerPack.bpl. 
---------------------------
OK   
---------------------------

这是例外:

---------------------------
Debugger Exception Notification
---------------------------
Project ConnectManager.exe raised exception class EPackageError with message 'Can't load package Projects.bpl.
The specified procedure could not be found'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------

我看不到如何阻止消息框出现。感激地接受任何想法。

1 个答案:

答案 0 :(得分:3)

解决!

我在我的应用程序中创建了SysUtils.LoadPackage的副本,并编辑了此副本以将第二个参数传递给SafeLoadLibrary。

所以现在对SafeLoadLibrary的调用如下:

Result := SafeLoadLibrary(Name, SEM_FAILCRITICALERRORS);

这有助于:http://msdn.microsoft.com/en-us/library/ms680621%28VS.85%29.aspx