我有一个Delphi项目,我需要编写一个C#应用程序,但我想使用这个Delphi项目中的一些函数。我之前没有在Delphi工作过。
我发现我可以从Delphi代码创建一个DLL并直接在C#中使用它。我怎样才能做到这一点?或者我也发现了一些转换为C#的转换工具,但它并不是那么好。那么最好的方法是什么? DLL还是转换?
答案 0 :(得分:11)
这是一个非常快速的示例,解释了如何在Delphi中创建dll,然后如何从C#调用它。 这是简单dll的Delphi代码,带有一个函数SayHello:
library DllDemo;
uses
Dialogs;
{$R *.res}
Procedure SayHello;StdCall;
Begin
ShowMessage('Hello from Delphi');
End;
exports
SayHello;
begin
end.
编译此代码,它将生成一个dll文件。
现在,在dll中调用上一个过程的C#代码是这样的:
using System.Runtime.InteropServices;
namespace CallDelphiDll
{
class Program
{
static void Main(string[] args)
{
SayHello();
}
[DllImport("DllDemo")]
static extern void SayHello();
}
}
将Delphi生成的dll放在C#项目输出目录中并运行C#应用程序。
现在,展开这个简单的样本以达到您的要求。
答案 1 :(得分:1)
正如已经通过DLL建议的那样(你需要使用适当的调用约定来标记函数,比如stdcall)
另一种解决方案是将相关功能包装在COM对象中,然后使用它。