我正在尝试将代码从C#中的函数导出到Delphi。我将DllExport与stdcall约定一起使用,并进行了一些测试:我测试了整数和字符串作为参数。当我尝试在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:\Users\Reznicencu Bogdan\source\repos\OCR\OCR\bin\x86\Release\OCR.dll';
procedure TForm1.FormCreate(Sender: TObject);
begin
ProcessImage;
end;
在Erosion出现错误。实际上,我从Aforge库使用的每个函数都会产生一个错误。我使用了Try / catch,因为我知道Delphi不能捕获非托管代码中的异常,但是它仍然无法正常工作。 我该如何解决这个错误?
事件日志中说:第一次机会异常为$ 767EDDC2。带有消息“外部异常E0434F4D”的异常类EExternalException。处理Project1.exe(9528)
答案 0 :(得分:2)
该问题似乎与AForge DLL的位置有关。如果将它们和类库DLL与Delphi可执行文件放在同一目录中,则错误消失。
也许还有其他方法可以告诉AForge在哪里定位其DLL。我将其保留为练习供读者进行调查。