将非托管代码从 C# 导入到 delphi
本文关键字:delphi 导入 非托管代码 | 更新日期: 2023-09-27 18:31:45
我有一个 c# 类,可以连接到运行良好的 dll。
现在我需要在德尔福中使用相同的函数。 最好的方法是什么?我不想在德尔福再次编写所有导入。有没有办法在Delphi中导入C#类或任何其他快速简便的方法。
这是我的 c# 类中的一个函数:
/// Return Type: ABS_STATUS->ABS_LONG->int
///pszDsn: ABS_CHAR*
///phConnection: ABS_CONNECTION*
[System.Runtime.InteropServices.DllImportAttribute("bsapi.dll", EntryPoint = "ABSOpen", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
public static extern int ABSOpen([System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string pszDsn, ref uint phConnection);
这
在德尔福很简单:
function ABSOpen(pszDsn: PAnsiChar; var phConnection: Cardinal): Integer;
stdcall; external 'bsapi.dll';
毫无疑问,您将拥有比这更多的功能,但它们都应该足够简单。如果我是你,我会回到原始的C++头文件,它应该比你的p/invokes更容易翻译。
我认为没有任何好的转换工具可以将 p/invoke 转换为 Delphi 导入单元。即使对于德尔福C++头,我也不相信有好的通用工具。你可以看看JEDI项目,它有一些有用的资源,但在我看来,是时候卷起袖子了!