C# DllExport - 不能使用 AForge 函数



我正在尝试将代码从C#中的一个函数导出到Delphi。我将DllExport与stdcall约定一起使用,并进行了一些测试:它有效。我测试了作为params的整数和字符串。当我试图在C#中使用Aforge库中的一个类时,就会出现这个问题。Delphi返回错误:"外部异常E0434F4D"。

public class ProcessClass
{
[DllExport(CallingConvention=CallingConvention.StdCall)]
public static void ProcessImage()
{
try
{
Erosion erosion = new Erosion();
}
catch (Exception Ex)
{
}
}
}

Delphi代码:

procedure ProcessImage; stdcall; external 'C:UsersReznicencu BogdansourcereposOCROCRbinx86ReleaseOCR.dll';
procedure TForm1.FormCreate(Sender: TObject);
begin
ProcessImage;
end;

这个错误出现在侵蚀。事实上,我从Aforge库中使用的每个函数都会产生一个错误。我使用Try/catch是因为我知道Delphi不能从非托管代码中捕获异常,但它仍然不起作用。如何解决此错误?

事件日志上写着:767EDDC2美元的首次机会异常。异常类EExternalException,消息为"外部异常E0434F4D"。处理Project1.exe(9528(

问题似乎与AForge DLL的位置有关。如果将它们和类库DLL放在与Delphi可执行文件相同的目录中,那么错误就会消失。

也许还有其他方法可以告诉AForge DLL的位置。我将把这作为一个练习留给读者去研究。

最新更新