原文鏈接:http://blog.sina.com.cn/s/blog_4a50d85b0100aw7u.html
上次我們說到的編譯成的dll文件與cs文件在同一目錄中,而不會放到虛擬目錄的bin目錄中,如何做才能夠把cs
文件編譯成dll且自動(dòng)放到虛擬目錄的bin文件夾中呢?
開始-------程序-------Microsoft Visual Studio.NET 2003-------Visual Studio.NET工具,點(diǎn)擊其中的“Visual Studio.NET2003命令提示”,就會進(jìn)入Microsoft Visual Studio.NET 2003命令提示窗口,然后我們用dos命令(cd)進(jìn)入要編譯成dll的cs文件所在的目錄,然后輸入命令:
csc /out: bin\index.dll /t:library index.cs
回車,就會在bin目錄下生成與cs文件同名的dll文件
但是如果這個(gè)cs文件引用了bin目錄下的另外一個(gè)dll文件如comman.dll,則應(yīng)該這樣輸入命令:
csc /out: bin\index.dll /r: bin\comman.dll /t:library index.cs
給出我自己的一個(gè)編譯實(shí)例:
首先進(jìn)入Microsoft Visual Studio.NET 2003命令提示窗口,在命令行下切換到c盤下(我把MouseGridView.cs放在C盤下面)
執(zhí)行
C:\>csc /out:MouseOver.dll /t:library MouseGridView.cs
動(dòng)態(tài)鏈接具有下列優(yōu)點(diǎn):
節(jié)省內(nèi)存和減少交換操作。很多進(jìn)程可以同時(shí)使用一個(gè) DLL,在內(nèi)存中共享該 DLL 的一個(gè)副本。相反,對于每個(gè)用靜態(tài)鏈接庫生成的應(yīng)用程序,Windows 必須在內(nèi)存中加載庫代碼的一個(gè)副本。
節(jié)省磁盤空間。許多應(yīng)用程序可在磁盤上共享 DLL 的一個(gè)副本。相反,每個(gè)用靜態(tài)鏈接庫生成的應(yīng)用程序均具有作為單獨(dú)的副本鏈接到其可執(zhí)行圖像中的庫代碼。
升級到 DLL 更為容易。DLL 中的函數(shù)更改時(shí),只要函數(shù)的參數(shù)和返回值沒有更改,就不需重新編譯或重新鏈接使用它們的應(yīng)用程序。相反,靜態(tài)鏈接的對象代碼要求在函數(shù)更改時(shí)重新鏈接應(yīng)用程序。
提供售后支持。例如,可修改顯示器驅(qū)動(dòng)程序 DLL 以支持當(dāng)初交付應(yīng)用程序時(shí)不可用的顯示器。
支持多語言程序。只要程序遵循函數(shù)的調(diào)用約定,用不同編程語言編寫的程序就可以調(diào)用相同的 DLL 函數(shù)。程序與 DLL 函數(shù)在下列方面必須是兼容的:函數(shù)期望其參數(shù)被推送到堆棧上的順序,是函數(shù)還是應(yīng)用程序負(fù)責(zé)清理堆棧,以及寄存器中是否傳遞了任何參數(shù)。
提供了擴(kuò)展 MFC 庫類的機(jī)制??梢詮默F(xiàn)有 MFC 類派生類,并將它們放到 MFC 擴(kuò)展 DLL 中供 MFC 應(yīng)用程序使用。
使國際版本的創(chuàng)建輕松完成。通過將資源放到 DLL 中,創(chuàng)建應(yīng)用程序的國際版本變得容易得多??蓪⒂糜趹?yīng)用程序的每個(gè)語言版本的字符串放到單獨(dú)的 DLL 資源文件中,并使不同的語言版本加載合適的資源。
使用 DLL 的一個(gè)潛在缺點(diǎn)是應(yīng)用程序不是獨(dú)立的;它取決于是否存在單獨(dú)的 DLL 模塊。
聯(lián)系客服