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 调查的练习。
我正在尝试将代码从 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 调查的练习。