在VB中写的testDll.dll,并编译了,代码(已经通过VB调用的测试)如下:
Option ExplicitPublic Function jia(ByVal a As Long, ByVal b As Long) As Long
Dim s As Long
s = a + b
jia = s
End FunctionC#的form代码如下:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace test11
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(192, 88);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(64, 24);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void button1_Click(object sender, System.EventArgs e)
{
c1 c = new c1();
c.Jia(1,2);
}
}
}c#中类c1的代码如下:
using System;
using System.Runtime.InteropServices;namespace test11
{
/// <summary>
/// c1 的摘要说明。
/// </summary>
public class c1
{
public c1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[DllImport("testDll.dll")]
private static extern void jia(int a,int b); public void Jia(int pX,int pY)
{
int i;
i=jia( pX, pY);
} }
}已经把testDll.dll拷到了bin\Debug的目录。运行程序错误提示:无法在 DLL testDll.dll 中找到名为 jia 的入口点
Option ExplicitPublic Function jia(ByVal a As Long, ByVal b As Long) As Long
Dim s As Long
s = a + b
jia = s
End FunctionC#的form代码如下:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace test11
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(192, 88);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(64, 24);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void button1_Click(object sender, System.EventArgs e)
{
c1 c = new c1();
c.Jia(1,2);
}
}
}c#中类c1的代码如下:
using System;
using System.Runtime.InteropServices;namespace test11
{
/// <summary>
/// c1 的摘要说明。
/// </summary>
public class c1
{
public c1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[DllImport("testDll.dll")]
private static extern void jia(int a,int b); public void Jia(int pX,int pY)
{
int i;
i=jia( pX, pY);
} }
}已经把testDll.dll拷到了bin\Debug的目录。运行程序错误提示:无法在 DLL testDll.dll 中找到名为 jia 的入口点
解决方案 »
- 如何将textbox中用户输入的信息保存到数据库中
- 谁有基于c#制作的ATM取款机的界面啊
- 问一个条码标签打印的问题!~
- asp 中files 文件中的dll文件
- treeview
- 梦凌制作的仿CSDN[1].NET论坛(XML+ASP.NET)源程序提供给初学者
- C#中怎样获取richtextbox中汉字的坐标 请高人传授richtextbox中有一篇文章每个字的坐标都得知道
- 经典老问题:一个窗口如何始终保持在另一个窗体之上?
- C#如何修改PDA上键值?
- 用chart“强行”绘制一条几万个数据点的曲线加载很慢(暂不考虑抽稀数据点),怎么解决或者有什么其他更好的绘制方法?
- +++++数据库配置问题+++++
- 关于多表连接的数据源,dataAdapter能否自动生成insert,update,delete语句
也是一样的
private static extern void jia(int a,int b); public void Jia(int pX,int pY)
{
int i;
i=jia( pX, pY);
}
没见过这样写的。
你直接在.net中引用就可以了。不用dllimport ,而且你做的还不正确。ft
private static extern int jia(int a,int b); public int Jia(int pX,int pY)
{
int i;
i=jia( pX, pY);
}
http://www.c-sharpcorner.com/3/CSNActiveXAN.asp