棋牌网站代理,艺术字设计免费生成,优时代网站建设,做酒水网站有哪些1说明#xff1a;
在C#中#xff0c;dll是添加 【类库】生成的。 2添加C#的dll#xff1a;
#xff08;1#xff09;在VS中新建一个Windows应用程序项目#xff0c;并命名为TransferDll。
#xff08;2#xff09;打开Windows窗体设计器#xff0c;从工具箱中为窗体…1说明
在C#中dll是添加 【类库】生成的。 2添加C#的dll
1在VS中新建一个Windows应用程序项目并命名为TransferDll。
2打开Windows窗体设计器从工具箱中为窗体添加相应的控件。
3在该应用程序的“解决方案资源管理”中的“引用”文件上单击鼠标右键
在下拉列表中选择“添加引用”项在弹出的“添加引用”对话框中选择“浏览”选项卡
在该选项卡中选择AccountDll类库的DLL文件示例36_02中的AccountDll.dll文件
单击“确定”按钮。完成动态链接库的添加。
4在主窗体的加载事件中调用AccountDll类库的formShow方法完成登录窗体的调用。代码如下 AccountDll.Account.public void formShow(string TName, out int n, out string u) 命名空间【AccountDll】对象class【Account】
AccountDll.Account EncapClass new AccountDll.Account(); //实例化动态链接库AccountDllprivate void Form1_Load(object sender, EventArgs e)
{int n 0; //定义变量用于记录是否登录成功string u ; //定义变量用于记录登录的用户名//在动态链接库中记当数据库的连接字符串class内静态变量AccountDll.Account.M_str_sqlcon Data Source.;Databasedb_36;User idsa;PWD;EncapClass.formShow(tb_Logon, out n, out u); //调用登录窗体if (n 0) //如果登录失败{Close(); //关闭主窗体}else{statusStrip1.Items[2].Text u; //显示当前登录的用户名}
}
【TName】登录表的名称【n】登录成功标识【u】登录成功的用户名。
3添加非C#的dll
在程序开发过程有时会使用C#调用其他编程语言开发的DLL或调用Windows系统API函数
由于这些DLL都属于非托管动态链接库DLL要调用非托管动态链接库DLL则需要使用DllImport属性。DllImport属性指示该属性化方法由非托管动态链接库DLL作为静态入口点公开
并提供对从非托管DLL导出的函数进行调用所必需的信息。
作为最低要求必须提供包含入口点的DLL的名称。在使用DllImport属性前须引用命名空间System.Runtime.InteropServices。下面的示例说明如何使用DllImport属性调用非托管的DLL。代码如下
[DllImport(KERNEL32.DLL, EntryPoint MoveFileW, SetLastError True,
CharSet CharSet.Unicode, ExactSpelling True,
CallingConvention CallingConvention.StdCall)]public static extern bool MoveFile(String src, String dst);
CallingConvention 指示入口点的调用约定
CharSet 指示如何向方法封送字符串参数并控制名称重整
EntryPoint 指示要调用的DLL入口点的名称或序号
PreserveSig 指示签名是否为非托管入口点的直接转换
SetLastError 指示被调用方在从属性化方法返回之前是否调用 SetLastError Win32 API 函数
案例
using System.Runtime.InteropServices;
namespace DelphiDll
{public partial class Form1 : Form{public class cCdll{[DllImport(projectdll.dll, EntryPoint Sum, SetLastError true, CharSet CharSet.Unicode, ExactSpelling true, CallingConvention CallingConvention.StdCall)]public static extern double Sum(double x, double y);}public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){textBox3.Text cCdll.Sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)).ToString();}}
}