新聞中心
C# 中如何調用DLL文件?
使用C#生成dll文件并調用
新平ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
一、創(chuàng)建dll文件:
例如生成一個md5編碼判斷狀態(tài)的文件,即,輸入一個字符串(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#應用程序開發(fā)過程中,加載dll文件時,報錯“未能加載文件或程序集“md5, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。系統(tǒng)找不到指定的文件。”,請指點一下是什么原因?
解決:這是因為加載dll的路徑問題,正確加載方式為:在“解決方案”的“引用”文件上右擊鼠標,選擇“添加引用”---》在“瀏覽”選項卡中添加引用(注意:自己定義的dll文件不能在“.NET”選項卡中添加。)
------------------------------------------------------------------------------------------------------------------
c#生成DLL文件,內部函數的問題
用C#編寫一組處理XML文檔的代碼,由于要求生成DLL文件,并由外部的其他工具訪問動態(tài)庫中的文件,
但是用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");//保存這個文檔到文件中
}
}
以上代碼實現(xiàn)刪除XML文件中某一節(jié)點的功能,如何在生成DLL后能夠使用檢測工具檢測出DeleteArg函數,
使用Dependency Walker沒檢測出該函數是不是以為著這個動態(tài)庫文件不能被調用.
----
因為.net的程序不是這樣把函數放在導出表的, 我記得.net做的dll只導出了一個_CorDllMain的方法,
所以用Dependency Walker是看不出來的. 如果你想看.net做的dll導出了什么內容,可以用反射查看元數據
----
生成這個DLL庫文件,是想要別的工具運行這個動態(tài)庫文件,實現(xiàn)DELETEARG()這個函數的功能
----
可以的
----
你上面的代碼不是生成DLL的,而是一個控制臺應用程序.
要想創(chuàng)建動態(tài)庫(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文件引進進去就可以用.
MSN SPACE上怎么添加音樂和其他模塊?
MSN Space PowerToy新功能完全圖解教程
Q] HTML模塊實現(xiàn)功能
HTML模塊允許用戶使用一個自定義模塊,在該模塊之內用戶可以隨意使用HTML來排版, 個性化等,例如弄一個專門的每周繪畫作品展示等等...
[/img]
[Q] 如何添加HTML模塊
使用該模塊的前提是IE6或更高版本, 該模塊不支持中文版本. 所有選項包括提示只顯示英文.
[Steps]
1. 登陸您的MSN Spaces, 點擊自定義[Customize]
2. 在瀏覽器地址欄[Address bar]的URL后面添加參數 powertoy=sandbox 按Enter或者點擊轉到[Go]
[/img]
3. 點擊自定義[Customize]-模塊[Modules]
4. 在下拉列表中找到PowerToy: Custom HTML項, 選擇添加[Add]
[/img]
5. 選擇保存[Save]按鈕
[/img]
[/img]
[Q] 如何使用該模塊
該模塊共有三大部分
1. HTML文本框 [非RTE] 在這里輸入你喜歡的HTML代碼 為了不扼殺你的創(chuàng)意 你喜歡輸什么就輸什么
2. 模塊標題 [Module Name TextBox]
3. 是否顯示邊框復選框[Show Border CheckBox] 不顯示邊框一般是為Plain Black/Red/Blue/Green服務的
4. 保存[Save]按鈕 回復[Revert]按鈕-回到上次保存狀態(tài) 不作保存
[/img]
[Q] 使用該模塊還有什么其他問題?
1. 該模塊無RTE, 完全符合喜歡HTML編輯的用戶 [/img]
2. 該模塊只支持512個字符, 因此不能輸入大量的HTML代碼, 使用部分受限.
3. 該模塊同樣會過濾大量HTML標簽
4. 用戶應當自行權衡是否使用邊框 視覺效果等應自行解決
5. 我放進去一個圖片或者別的東西竟然右邊出去了!!! Answer: 大哥大姐, 本來讓你自定義, 如果不怕難看就讓他出去吧 自定義嘛 那就盡量不要讓他出去嘍
界面設計模塊完全圖解教程
[Q] 界面設計模塊實現(xiàn)功能
界面設計模塊允許用戶使用一個自定義模塊,在該模塊之內用戶可以隨意調整整個Spaces的文字顏色 背景色等等一系列屬性 個性十足 今天你Spaces了嗎 這才是真正的自定義!
[Q] 如何添加界面設計模塊
使用該模塊的前提是IE6或更高版本, 該模塊不支持中文版本. 所有選項包括提示只顯示英文.
[Steps]
1. 登陸您的MSN Spaces, 點擊自定義[Customize]
2. 在瀏覽器地址欄[Address bar]的URL后面添加參數 powertoy=tweakomatic 按Enter或點擊轉到[Go]
[/img]
3. 點擊自定義[Customize]-模塊[Modules]
4. 在下拉列表中找到PowerToy: Tweak UI項, 選擇添加[Add]
[/img]
5. 選擇保存[Save]按鈕
[Q] 如何使用該模塊
該模塊共有5大部分
1. 背景色[Background Color] 包括內部[Inner] 和 外部[Outer]
A. 內部[Inner] Spaces內部各模塊空隙處的背景顏色 3個兩位十六進制正整數 00-FF 如:00CCFF
B. 外部[Outer] Spaces右邊空白處的背景顏色[大背景色] 3個兩位十六進制正整數 00-FF 如:00CCFF
[/img]
2. 背景圖片[Background Image] 包括位置[Position] , 重復[Repeat] 和顯示[Display] 依據各個主題[Theme]的不同 有些是有背景而有些是沒有背景圖片的 對于有背景圖片的 我們可以:
A. 位置[Position] Spaces背景圖片的位置, 依次為默認[Default], 左上[Top Left], 中上[Top Center], 右上[Top Right], 左中[Center Left], 中中[Center Center], 右中[Center Right], 左下[Bottom Left], 中下[Bottom Center], 右下[Bottom Right] 這個不需要細講了吧 崩潰了
B. 重復[Repeat] Spaces背景圖片重復的方式 不明白? 就是Windows桌面墻紙不是經常有中央,平鋪以及拉伸什么的嘛, 就是差不多那個意思. 這里依次有默認[Default], 重復[Repeat], 不重復[No Repeat], 縱[Y]向重復[Repeat-Y], 橫[X]向重復[Repeat-X]. 如果你背景是大圖片, 就不要重復了, 小圖片重阿重的才有效果 總體來說 可能我翻譯不恰當 重復你就當成平鋪好了 這樣更好理解
C. 顯示[Display] 是否顯示背景圖片 默認[Default]是顯示的, 隱藏[Hide]則不顯示
3. 文字顏色[Font Color] 包括鏈接/鏈接圖標[Links/Bullets] 和 文字[Text]
A. 鏈接/鏈接圖標[Links/Bullets] 所有超鏈接以及鏈接符號的顏色 3個兩位十六進制正整數 00-FF 如:00CCFF
B. 文字[Text] 所有非鏈接普通文本的顏色 3個兩位十六進制正整數 00-FF 如:00CCFF
4. 模塊背景[Module Background] 包括顏色[Color] 和 透明度[Transparent]
A. 顏色[Color] 各個模塊的背景顏色 3個兩位十六進制正整數 00-FF 如:00CCFF
B. 透明度[Transparent] 各個模塊背景的透明度設置 20-100的整數值 分別為 20%-100%不透明 使用這個對整體視覺沖擊比較大
5. 模塊邊框[Module Borders] 包括寬度[Width], 風格[Style] 和 顏色[Color]
A. 寬度[Width] 各個模塊邊框的寬度 0-9 建議值為0或1 2以上就不要弄拉 大哥大姐 弄那么粗的邊框真的很難看啊 不信弄個9試試? 嘿 還試試就試試? 郁悶
B. 風格[Style] 各個模塊邊框的風格設置 用過.Net開發(fā)Web或者網頁經常用的就知道有什么區(qū)別 當然 大家多試幾次都能看出來 依次有默認[Default]-默認, 無[None]-不顯示邊框, [Dotted]-小點點, [Dashed]-小虛線, [Solid]-實線, [Double]-實線, [Groove]-凹按鈕, [Ridge]凸按鈕, [Inset], [Win-inset], [Outset]-沒啥大的區(qū)別? 主要是用在這里不吼/span
c語言怎么調用dll文件?
1、新建DLLTest文件夾,在該文件夾中新建source文件夾。
2、在source文件夾中造add.c。
3、win+R+cmd請出總指揮“命令行”,輸入。
4、繼續(xù)輸入(路徑也要隨機應變)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。
5、新建源文件call_dll.c或.cpp放到DLLTest文件夾,同時add.dll也復制過來。
6、編譯,連接運行出現(xiàn)個5。調用成功。
注意事項:
C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言。
分享名稱:corvb.net的簡單介紹
分享URL:http://www.dlmjj.cn/article/doecihd.html