当前位置:首页 > 知识经验 > 正文内容

Delphi调用C# Dll的2种方法

作者: 葛屹肃 | 日期: 2023-07-24 | 分类: 知识经验

由于工作需要,必须在Delphi项目调用C#所写的dll,否则,工作量将翻几番,需要将Delphi整个项目转为C#。网上搜索资料后,测试有2种可行方法。

开发工具:Delphi7 / Visual Studio 2010

一、C#编写dll

1、创建一个“类库”项目(Mydll)

using System.Runtime.InteropServices;

namespace Mydll
{
public interface IShow
{
string Show();
}

[ClassInterface(ClassInterfaceType.None)]
public class FirstDll : IFirstDll
{
public string Show()
{
return “My First Dll”;
}
}
}

2、项目:属性→应用程序→程序集信息,色选“使程序集COM可见”
Delphi调用C# Dll的2种方法

3、[生成]勾选“为COM互操作注册”

C#创建一个“类库”项目(Mydll)

4、编译生成MyDll.dll,并将dll放到delphi主程序目录下

5、打开vs2010自带的工具“visual studio 2010命令提示”,输入regasm 路径/MyDll.dll 向系统注册此dll

二、Delphi调Dll

方法一:不需生成tlb文件,按钮中加入以下代码

procedure TForm1.Button1Click(Sender: TObject);
var
aclass: variant;
begin
aclass:= createoleobject(‘Mydll.FirstDll’);   //项目名称.类名称
ShowMessage(aclass.Show());
end;

方法二:生成tlb文件

1、打开vs2010自带的工具“visual studio 2010命令提示”,输入 tlbexp 路径/MyDll.dll 得到一个MyDll.tlb 文件

2、打开delphi,选择“project”–“import type library”找到刚才的MyDll.tlb,点击 createunit,向delphi中引入一个com接口。

3、按钮中,加入以下代码

procedure TForm1.Button2Click(Sender: TObject);
var
aclass: TFirstDll;
begin
aclass := TFirstDll;.create(Self);
ShowMessage(aclass.Show());
end;

以上代码在Delphi7与Visual Studio 2010运行通过。

参考资料:

1、Delphi调用C#编写的DLL库

2、Delphi 调用C# 编写的DLL方法

版权声明:本文由〖葛屹肃〗发布,转载请注明出处!
文章链接:https://www.geyisu.com/3183.html

  • 评论:(0)

已有 0 位网友发表了一针见血的评论,你还等什么?

◎欢迎大家参与讨论