C# DllExport - 不能使用 AForge 函数

C# DllExport -Can't use AForge functions

我正在尝试将代码从 C# 中的函数导出到 Delphi。我将 DllExport 与 stdcall 约定一起使用并进行了一些测试:它有效。我测试了整数和字符串作为参数。当我尝试在 C# 中使用 Aforge 库中的 class 时出现问题。 Delphi returns 一个错误:"External Exception 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.Actually 我使用 Aforge 库中的每个函数都会产生错误。我使用 Try/catch 是因为我知道 Delphi 无法从非托管代码中捕获异常,但它仍然不起作用。 我该如何解决这个错误?

事件日志显示:$767EDDC2 的第一次机会异常。异常 class EExternalException,消息 'External exception E0434F4D'。进程 Project1.exe (9528)

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

也许还有其他方法可以告诉 AForge 在哪里找到它的 DLL。我将把它留作 reader 调查的练习。