C#DllExport-不能使用AForge函数

时间:2018-07-25 10:47:45

标签: c# delphi dllexport

我正在尝试将代码从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)

1 个答案:

答案 0 :(得分:2)

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

也许还有其他方法可以告诉AForge在哪里定位其DLL。我将其保留为练习供读者进行调查。