如何在加载Delphi包时消除入口点未找到错误?

如何在加载Delphi包时消除入口点未找到错误?,delphi,package,Delphi,Package,我维护一个用Delphi6编写的程序。它使用SysUtils.LoadPackage动态加载一些bpl包文件。我经常更改程序中导致包无法加载的内容。发生这种情况时,会出现一个消息框,然后引发异常。消息框和异常是分开的 下面是消息框的一个示例: --------------------------- Connect Manager: ConnectManager.exe - Entry Point Not Found --------------------------- The procedur

我维护一个用Delphi6编写的程序。它使用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   
---------------------------
我看不出如何阻止消息框出现。感激地接受任何想法。

解决了

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

因此,对SafeLoadLibrary的调用现在如下所示:

Result := SafeLoadLibrary(Name, SEM_FAILCRITICALERRORS);

这很有帮助:。

您确定第二条消息来自您的应用程序而不是Delphi调试器吗?第二条消息是我的应用程序引发的异常,被调试器捕获。这将抑制第一条错误消息。好主意。当应用程序引发异常时,调试器将显示第二条错误消息。进行此更改后,您的程序仍将引发该异常。您可以,也可以按消息框上的“继续”按钮,让程序在调试器发出通知后捕获异常。此外,考虑在SafeLoadLibrary的调用中包含<代码> SimoNoOpenFieleRoRoBOX ,因为这是默认的。