delphi - 尝试加载库时出现 AccessViolation 异常

标签 delphi dll exception

我正在尝试在我的 Delphi 项目中加载一个库,该库可以位于两个位置。因此,要加载它,我使用以下代码:

  try
    FHandle:=LoadLibrary(('some\address'));
  except on EAccessViolation do
    FHandle:=LoadLibrary(('another\address'));
  end;

但是,我遇到了问题,因为它从未达到异常,我收到错误,存在访问冲突,但它不会尝试从其他地址加载...

有人知道原因吗?

谢谢

最佳答案

LoadLibrary 不会引发异常。它是一个 Win32 函数。咨询documentation如果失败,您将看到它返回NULL

您的代码应该是:

FHandle := LoadLibrary('some\address');
if FHandle = 0 then
  FHandle := LoadLibrary('another\address');
if FHandle = 0 then
  // handle the error, probably by raising an exception

另一个选择可能是使用 FileExists 来检查哪个可能位置包含该文件。

关于delphi - 尝试加载库时出现 AccessViolation 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742489/

相关文章:

delphi - 在德尔福将摄氏转换为华氏和反之亦然

Delphi GLScene 将场景导出为 STL

Delphi Synedit 双向绑定(bind)

c++ - 使库函数使用从库类派生的类

python - 一旦遇到异常,我可以忽略下面的所有行并转到 for 循环中的另一个项目吗?

c# - HttpChannelRequest WaitForReply 上的 WCF 代理 ProcessGetResponseWebException

json - 在 Delphi XE5 中生成一个包含数组的示例 JSON

c# - c# dll 的独立设置 - 已更新

python - NetworkX,当节点不在图中时,如何成功捕获 network.exception.NetworkXError?

Python - 从 python33.dll 调用函数(访问冲突)