使用C#生成dll文件并调用
一、创建dll文件:
例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断此字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。
打开VS 2005,“文件”--》“新建”--“项目”,选择“Windows 控件库”,命名后点击“确定”,在“UserControl1.cs”中输入以下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Text;
using System.Security.Cryptography;
namespace md5
{
public partial class Program : UserControl
{
#region MD5 32位加密:GetMd5Str32
/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="strSource">待加密字串</param>
/// <returns>加密后的字串</returns>
public static string GetMd5Str32(string strSource)
{
byte[] bytes = Encoding.ASCII.GetBytes(strSource);
byte[] hashValue = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++)
{
sb.Append(hashValue[i].ToString("x2"));
}
return sb.ToString().ToUpper();
}
#endregion
#region 核对md5编码是否一致:CheckMd5String()
/// <summary>
/// 核对md5编码是否一致
/// </summary>
/// <param name="ConvertString"></param>
/// <returns>如果一致返回true,否则返回false</returns>
///
public static bool CheckMd5String(string str1, string str2)
{
string md5String = str1; //需要验证的字符串
string md5DbString = str2; //需要核对的32位md5编码
int result = string.Compare(md5.Program.GetMd5Str32(str1), md5DbString, true);
if (result == 0)
{
return true;
}
else
{
return false;
}
}
#endregion
}
}
修改“UserControl1.Designer.cs”中的命名空间为“md5”,方法为“Program”,即可生成dll文件。
在...\bin\Debug文件假下,可以找到相应的dll文件。
二、部署dll流程:
首先把dll文件放到应用程序...\bin\Debug\下;
然后在解决方案中添加引用:右键鼠标-->添加引用-->浏览-->选择dll放置路径后点击“确定”。
注意:要在应用文件头处使用using md5;命令。
测试应用程序代码,如下:Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using md5;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string str1 = textBox1.Text.ToString();
string md5String = textBox2.Text.ToString();
textBox3.Text = md5.Program.GetMd5Str32(str1);
textBox4.Text = md5.Program.CheckMd5String(str1, md5String).ToString();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
三、注意点:
1、在C#应用程序开发过程中,加载dll文件时,报错“未能加载文件或程序集“md5, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。”,请指点一下是什么原因?
解决:这是因为加载dll的路径问题,正确加载方式为:在“解决方案”的“引用”文件上右击鼠标,选择“添加引用”---》在“浏览”选项卡中添加引用(注意:自己定义的dll文件不能在“.NET”选项卡中添加。)
------------------------------------------------------------------------------------------------------------------
c#生成DLL文件,内部函数的问题
用C#编写一组处理XML文档的代码,由于要求生成DLL文件,并由外部的其他工具访问动态库中的文件,
但是用Dependency Walker检测我生成的这个DLL文件没有显示任何的函数,以前没做过这方面的东西,求教了
代码如下:
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
DeleteArg();
}
static void DeleteArg()
{
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\\data1.xml");
XmlNode root = doc.DocumentElement;
XmlNode Node1;
XmlNodeList nodeList = doc.SelectSingleNode("/Entity/Columns").ChildNodes;
foreach (XmlNode xn in nodeList)
{
XmlElement xe = (XmlElement)xn;
if (xe.GetAttribute("Name") == "SysModuleID")
{
xe.RemoveAll();
//xe.RemoveAttribute("Name");//删除Name属性
}
}
doc.Save("c:\\data1.xml");//保存这个文档到文件中
}
}
以上代码实现删除XML文件中某一节点的功能,如何在生成DLL后能够使用检测工具检测出DeleteArg函数,
使用Dependency Walker没检测出该函数是不是以为着这个动态库文件不能被调用.
----
因为.net的程序不是这样把函数放在导出表的, 我记得.net做的dll只导出了一个_CorDllMain的方法,
所以用Dependency Walker是看不出来的. 如果你想看.net做的dll导出了什么内容,可以用反射查看元数据
----
生成这个DLL库文件,是想要别的工具运行这个动态库文件,实现DELETEARG()这个函数的功能
----
可以的
----
你上面的代码不是生成DLL的,而是一个控制台应用程序.
要想创建动态库(DLL),在新建项目窗口中选择"类库", 默认的代码是这样的:
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary2
{
public class Class1
{
}
}
// 然后添加你的代码.最后代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace ClassLibrary2
{
public class Class1
{
public void DeleteArg()
{
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\\data1.xml");
XmlNode root = doc.DocumentElement;
XmlNode Node1;
XmlNodeList nodeList = doc.SelectSingleNode("/Entity/Columns").ChildNodes;
foreach (XmlNode xn in nodeList)
{
XmlElement xe = (XmlElement)xn;
if (xe.GetAttribute("Name") == "SysModuleID")
{
xe.RemoveAll();
//xe.RemoveAttribute("Name");//删除Name属性
}
}
doc.Save("c:\\data1.xml");//保存这个文档到文件中
}
}
}
最后编译一下就可以,
在Debug文件夹下回产生一个dll文件,最后在需要的工程里,将这个dll文件引进进去就可以用
温馨提示:内容为网友见解,仅供参考
C#怎么注册dll文件
方法:调用Regsvr32法 既然可以在运行栏中输入“Regsvr32.exe 路径”的方法来注册,那么,一定可以在C#程序中采用同样的方法来调用Regsvr32,以实现注册:Process p = new Process(); p.StartInfo.FileName = "Regsvr32.exe";p.StartInfo.Arguments = "\/s C:\\\\DllTest.dll";\/\/ 路径中不能有空格 p...
请问C#中如何生成.dll文件?
项目上点右键- 编译\/生成\/重新生成都可以,会生成Dll文件的。一般的会在Bin 或是 Debug 或是 Release下,这个时候生成的目录,可以设置的,最开始系统也会有一个默认的路径。 一般的,有一个解决方案有两个项目以上时会生成dll文件(有项目间的引用),其他就是项目里也引用了其他的Dll文件,编译以后...
详解两种C#自动实现DLL(OCX)控件注册的方法
regsvr [\/u] [\/s] [\/n] [\/i[:cmdline]] DLL文件名 命令可以在 开始→运行 的文本框中 也可以事先在bat批处理文档中编写好命令 未带任何参数是注册DLL文件功能 其它参数对应功能如下 \/u 反注册DLL文件;\/s 安静模式(Silent)执行命令 即在成功注册\/反注册DLL文件前提下不显示结果提示框 \/c 控...
如何注册DLL文件
如果是类库dll文件,引用的步骤是这样的:在解决方案管理器中,选中要添加引用的项目或网站-右击-添加引用-选择要添加的dll文件路径-确定,即可添加到项目中。但是具体引用时还需要引用相关命名空间。如果是控件dll文件,可以右击工具箱-选择项(需要稍等一会)-出现选择工具箱项-浏览-选择要添加的dll文件,...
如何利用C#创建和调用DLL
然后创建一个应用程序使用这个DLL。运行并输出结果。 三、创建DLL 让我们创建以下三个C#代码文件:1、 MySwap.csusing System;namespace MyMethods { public class SwapClass { public static bool Swap(ref long i,ref long j) { i = i+j; j = i-j; i = i-j; return true; } }} 2...
c# regsvr32 如何注册dll
按视窗键(就是ctrl和alt中间的小窗户)+r键,在出来的框里打regsvr32 nvcpl.dll,点确定。另外,这个命令是:运行中输入:regsvr32 \/u nvcpl.dll ,系统会显示nvcpl.dll中的dllunregisterserver成功。再到桌面点右键试试,显卡右键菜单没了。如果想恢复,只需运行中输入:regsvr32 nvcpl.dll 即可。仅...
在Visual c# 2005 怎么生成lib文件和dll文件
1. 使用__declspec(dllexport)如你想导出函数foo, 则这样定义 __declspec(dllexport) int foo(int abc){ ...} 此法较简单,但没有模块定义文件灵活。2. 使用模块定义文件 如你想导出mydll.dll中函数foo,则添加mydll.def文件,输入 LIBRARY mydll EXPORTS foo 项目->属性->配置属性->链接器->...
如何在C#做的网页里添加bin文件和DLL?
先将dll文件拷贝到bin目录下,然后在解决方案中找到引用,右键-添加引用-浏览选项卡中找到你所要添加的dll文件,然后保存项目,然后使用的时候注意要引用添加的命名空间即可
vs2019 c#中怎么添加dll文件
1.鼠标右键点击项目,然后如图操作 第一步 2.然后点击浏览就可以加载本地的dll文件 第二步
c#使用命令行编译生成dll文件
C#使用csc.exe编译程序,csc使用\/target:library(缩写: \/t:library)参数生成Dll文件。其它参数如下:Visual C# 编译器选项 - 输出文件 - \/out:<文件> 指定输出文件名(默认值: 包含主类的文件或第一个文件的基名称)\/target:exe 生成控制台可执行文件(默认) (缩写: \/t:exe)\/target:winexe ...