如何在 C# 应用程序中使用 Delphi 代码?

发布于 2024-11-07 15:04:13 字数 180 浏览 0 评论 0原文

我有一个 Delphi 项目,我需要编写一个 C# 应用程序,但我想使用这个 Delphi 项目中的一些功能。我以前没有在德尔福工作过。

我发现我可以从 Delphi 代码创建一个 DLL 并直接在 C# 中使用它。我怎样才能做到这一点?或者我也找到了一些转换工具来转换为C#,但是不太好。那么最好的方法是什么? DLL还是转换?

I have a Delphi project, and I need to write a C# application, but I want to use some functions from this Delphi project. I haven't worked in Delphi before.

I found that I can create a DLL from the Delphi code and use it directly in C#. How can I do that? Or I also found some conversion tools to convert to C#, but it wasn't so good. So what is the best way? DLL or convert?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遇见了你 2024-11-14 15:04:13

这是一个非常快速的示例,解释了如何在 Delphi 中创建 dll,然后如何从 C# 调用它。
下面是带有一个函数 SayHello 的简单 dll 的 Delphi 代码:

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# 应用程序。

现在,扩展这个简单的示例来实现您的要求。

Here is a very quick sample explains how to make dll in Delphi and then how to call it from C#.
Here is Delphi code of simple dll with one function SayHello:

library DllDemo;

uses
  Dialogs;

{$R *.res}

Procedure SayHello;StdCall;
Begin
  ShowMessage('Hello from Delphi');
End;

exports
  SayHello;

begin
end.

Compile this code and it will produce a dll file.

now, the C# code to call the previous procedure in the dll is like this:

using System.Runtime.InteropServices;

namespace CallDelphiDll
{
  class Program
  {
    static void Main(string[] args)
    {
      SayHello();
    }

    [DllImport("DllDemo")]
    static extern void SayHello();
  }
}

Put the Delphi produced dll in the C# project output directory and run the C# application.

Now, expand this simple sample to achieve your requirement.

请别遗忘我 2024-11-14 15:04:13

正如通过 DLL 所建议的那样(您需要使用适当的调用约定(例如 stdcall)来标记函数)。

另一种解决方案是将相关功能包装在 COM 对象中,并使用它。

As already suggested via a DLL (you need to flag the functions with an appropriate calling convention like stdcall)

A different solution would be to wrap the relevant functionality in a COM object, and use that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文