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