`
isiqi
  • 浏览: 16028358 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

如何调用C# DLL

阅读更多

以前用delphi写的CS程序 今天客户要加几个模块上去 ,刚好会点C# ,这后面模块就用C#写的编译成dll文件, 在用delphi调用C#写的dll文件时折腾好阵子就有了这些经历写下来。

一、打开vs2005

新建windows应用程序项目命名为SFrm,删除应用程序自动生成的Program.cs

(因为我们是要生成dll文件)

在窗体类新建一接口(interface SHFRM) 让窗体类实现接口 代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace SFrm

{

public interface SHFRM //此接口用在delphi下调用必须用到

{

void ShchildFrm();

}

public partial class Form1 : Form,SHFRM

{

private BindingSource bindingSource1 = new BindingSource();

private SqlDataAdapter dataAdapter = new SqlDataAdapter();

public Form1()

{

InitializeComponent();

}

/// <summary>

/// 显示窗口

/// </summary>

public void ShchildFrm()

{

Form1 frm = new Form1();

frm.Show();

}

/// <summary>

/// 按钮事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

dataGridView1.DataSource = bindingSource1;

GetData("select * from Customers");

}

private void GetData(string selectCommand)

{

try

{

String connectionString = "Data Source=.;initial catalog=Northwind;user id =sa;pwd=";

dataAdapter = new SqlDataAdapter(selectCommand, connectionString);

SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

DataTable table = new DataTable();

table.Locale = System.Globalization.CultureInfo.InvariantCulture;

dataAdapter.Fill(table);

bindingSource1.DataSource = table;

dataGridView1.AutoResizeColumns(

DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

}

catch (SqlException)

{

MessageBox.Show("To run this example, replace the value of the " +

"connectionString variable with a connection string that is " +

"valid for your system.");

}

}

}

}

右击项目名在属性对话框中更改输出类型为”类库” 在界面点击程序集信息 按钮 如下图:

使程序集com可见必须选中

完成dll文件生成

二.DotNet 类库打包成COM类型库(在vs命令行执行如下操作)

Tlbexp.exe SFrm.dll /out: SFrm.tlb

三.注册COM类型库

Regasm.exe SFrm.dll

四.Delphi导入类型库

Delpi 中, Project -> Import Type Library ,选中类型库:dotnet2com.tlb,

生成 DotNet2Com_TLB 单元文件。单元文件中有接口 SHFRM。

SHFRM = interface(IDispatch)

['{D8400C54-E4B2-36BD-B970-45CD204F319A}']

procedure ShchildFrm; safecall;

end;和代理类声明 TForm1及获得 SHFRM 接口的属性:

property DefaultInterface: _Form1 read GetDefaultInterface;

五.Delphi 中使用

uses

SFrm_TLB;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

Frm:TForm1;

begin

Frm:=TForm1.Create(self);

(Frm.DefaultInterface as SHFRM).ShchildFrm();//显示dll文件里窗体

end;

delhi程序运行结果如下图:

注:在程序运行环境必须安装。net环境并注册dll文件 否则会报:无注册类别

分享到:
评论

相关推荐

    delphi调用C# DLL

    delphi调用C# DLL

    pb9.0调用c#dll

    pb9.0调用c#dll 动态链接库

    vb6调用C#Dll函数

    vb6调用C#Dll函数

    VB6.0调用C# Dll解决方法

    VB6.0调用C# Dll解决方法 用C#实现dll 用cmd命令生成tlb文件 VB引用tlb文件 进行引用。

    SqlServer调用C#DLL的方法

    SqlServer调用C#DLL的方法!

    C++调用C#DLL

    C++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLLC++调用C#DLL

    VB调用C# Dll文件

    在工作中遇到了在VB6.0的程序里要调用C#的Dll的问题,显然这两个开发环境属于不同的平台。在网上拜读了几位大师的文章后,在实际试验中还是会发生这样那样的问题,最后还是实现了预期效果,在此我把我的实验步骤和...

    C++调用C#DLL例子

    用C++调用C#实例代码,C#封装为DLL。

    Python 调用C# dll文件

    Python 调用C# dll文件 pythonnet

    MFC 调用C# dll 实现excel的创建

    MFC 调用C# dll 实现excel的创建

    C++调用C#dll代码

    C++调用C#dll,采用的VS2010编写的。具体的看代码,比较易懂。

    JAVA通过JNI调用C#dll的整个项目工程

    本资源包括JAVA工程,C++工程,C#dll测试工程

    vc6调用C# DLL

    最近要使用VC6调用C#生成的DLL功能,网上查了很多文档,终于在自己的电脑上以代码的形式实现了,现分享给需要的同学。附件中有2个工程,分别是C#的DLL,和VC6的调用EXE工程,相信先看到自己编译的代码运行起来,再去...

    Java调用C#DLL

    该资源包含C#开发DLL源码,Java调用DLL源码,测试已通过

    C++调用C#的DLL实例程序

    C++调用C#的DLL实例程序,压缩包中包含部分程序说明,很小的几行代码,但是C++调用C#的DLL目的已经达到。

    Delphi调用C#DLL.rar

    内附 C# DLL的代码 Delphi调用的代码 详细说明 以及注册文件RegAsm.exe

    labview调用C#DLL.docx

    labview调用在.net平台下C#的生成DLL。

    VC++调用C# DLL

    c#开发的插件DLL,用C++来调用 。 折腾了几天终于找到的解决的方法 注意:C++中设置:Common Language Runtime support(/clr)

    C++builder 调用C# DLL

    这是一个C++builder 调用C# DLL的标准范例,通过该范例的学习可以掌握BCB调用C#的DLL的方法。具有很强的学习和借鉴意义。

    JS调用c#编写的DLL 源代码

    JS调用c#编写的DLL 源代码 包含c#新建类库,生成DLL,以及DLL的注册 ,JS调用DLL的两种方法的整个过程。

Global site tag (gtag.js) - Google Analytics