1. 關於asp.net中的CS文件怎麼生成DLL文件
例如有index.aspx
和
index.aspx.cs
兩個文件,
現在要把index.aspx.cs
編譯成
DLL
文件,可以這樣寫:
csc
/out:yourdir\index.dll
/t:library
/r:bin/myConnBase.dll
index.aspx.csTop
生成的index.dll需放在你的虛擬目錄根下的bin下即可。或你的網站根下的bin文件夾中
2. 如何net中的dll文件
使用csc命令將.cs文件編譯成.dll的過程很多時候,我們需要將.cs文件單獨編譯成.dll文件, 操作如下:打開命令窗口->輸入cmd到控制台->cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322轉到vs.net安裝的該目錄下->執行csc命令csc /target:library File.cs->在該目錄下產生一個對應名字的.dll文件(前提:把.cs文件放到C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322目錄下)csc命令的方式很多,請參考以下譯File.cs 以產生 File.execsc File.cs 編譯 File.cs 以產生 File.dllcsc /target:library File.cs 編譯 File.cs 並創建 My.execsc /out:My.exe File.cs 通過使用優化和定義 DEBUG 符號,編譯當前目錄中所有的 C# 文件。輸出為 File2.execsc /define:DEBUG /optimize /out:File2.exe *.cs 編譯當前目錄中所有的 C# 文件,以產生 File2.dll 的調試版本。不顯示任何徽標和警告csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs 將當前目錄中所有的 C# 文件編譯為Something.xyz(一個 DLL)csc /target:library /out:Something.xyz *.cs 編譯 File.cs 以產生 File.dllcsc /target:library File.cs這個就是我們使用最多的一個命令,其實可以簡單的寫成csc /t:library File.cs,另外的一個寫法是 csc /out:mycodebehind.dll /t:library mycodebehind.cs,這個可以自己指定輸出的文件名。csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,這個的作用是把兩個cs文件裝到一個.dll文件里舉例(摘於網路)一、 動態鏈接庫 什麼是動態鏈接庫?DLL三個字母對於你來說一定很熟悉吧,它是Dynamic Link Library 的縮寫形式,動態鏈接庫(DLL) 是作為共享函數庫的可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬於其可執行代碼的函數。函數的可執行代碼位於一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接並與使用它們的進程分開存儲的函數。DLL 還有助於共享數據和資源。多個應用程序可同時訪問內存中單個 DLL 副本的內容。 和大多數程序員一樣,你一定很使用過DLL吧。也曾感受到它的帶給你程序設計和編碼上的好錯吧今天我想和大家探討一個主題:如何在C#創建和調用DLL(動態鏈接庫), 其實在很大意義上而講,DLL讓我更靈活的組織編寫我們的應用程序,作為軟體設計者,可一個根據它來達到很高的代碼重用效果。下面我來介紹一下在C#中如何創建和調用DLL。二、准備工作 我們需要對我們接下來要做的事情做個簡單的介紹,在本文我們將利用C#語言創建一個名為 MyDLL.DLL的動態鏈接庫,在這個動態鏈接庫文件中我們將提供兩個功能一個是對兩個參數交換他們的值,另一個功能是求兩個參數的最大公約數。然後創建一個應用程序使用這個DLL。運行並輸出結果。三、創建DLL讓我們創建以下三個C#代碼文件:1、 MySwap.csview plain to clipboardprint?//該語句不要加入到程序中using 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、MyMaxCD.csview plain to clipboardprint?//該語句不要加入到程序中using System; namespace MyMethods { public class MaxCDClass { public static long MaxCD(long i, long j) { long a,b,temp; if(i>j) { a = i; b = j; } else { b = i; a = j; } temp = a % b; while(temp!=0) { a = b; b = temp; temp = a % b; } return b; } } } 需要注意的是:我們在製作這兩個文件的時候可以用Visual Studio.NET或者其他的文本編輯器,就算是記事本也可以。這兩個文件雖然不在同一個文件裡面,但是他們是屬於同一個namespace(名稱空間)這對以後我們使用這兩個方法提供了方便。當然他們也可以屬於不同的名稱空間,這是完全可以的,但只是在我們應用他們的時候就需要引用兩個不同的名稱空間,所以作者建議還是寫在一個名稱空間下面比較好。 接下來的任務是把這兩個cs文件變成我們需要的DLL文件。方法是這樣的:在安裝了Microsoft.NET Framework的操作系統上,我們可以在Windows所在目錄下找到Microsoft.NET目錄。在這個目錄下面提供了C#的編譯器,CSC.EXE運行:csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs,完成後可在本目錄下面找到我們剛才生成的MyDLL.DLL文件/target:library 編譯器選項通知編譯器輸出 DLL 文件而不是 EXE 文件。後跟文件名的 /out 編譯器選項用於指定 DLL 文件名。如果/out後面不跟文件名編譯器使用第一個文件 (MySwap.cs) 作為 DLL 文件名。生成的文件為MySwap.DLL文件。 OK!我們創建動態鏈接庫文件的任務完成了,現在是我們享受勞動成果的時候了,下面我將介紹如何使用我們所創建的動態鏈接庫文件。 四、使用DLL 我們簡單寫一個小程序來測試一下我們剛才寫的兩個方法是否正確,好吧,跟我來:MyClient.csview plain to clipboardprint?//該語句不要加入到程序中using System; using MyMethods; //這里我們引用剛才定義的名稱空間,如果剛才的兩個文件我們寫在兩個不同的名稱空間 class MyClient { public static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("Usage: MyClient <num1> <num2>"); return; } long num1 = long.Parse(args[0]); long num2 = long.Parse(args[1]); SwapClass.Swap(ref num1,ref num2); // 請注意,文件開頭的 using 指令使您得以在編譯時使用未限定的類名來引用 DLL 方法 Console.WriteLine("The result of swap is num1 = {0} and num2 ={1}",num1, num2); long maxcd = MaxCDClass.MaxCD(num1,num2); Console.WriteLine("The MaxCD of {0} and {1} is {2}",num1, num2, maxcd); } }若要生成可執行文件 MyClient.exe,請使用以下命令行:csc /out:MyClient.exe /reference:MyLibrary.DLL MyClient.cs/out 編譯器選項通知編譯器輸出 EXE 文件並且指定輸出文件名 (MyClient.exe)。/reference 編譯器選項指定該程序所引用的 DLL 文件。五、執行若要運行程序,請輸入 EXE 文件的名稱,文件名的後面跟兩個數字,例如:MyClient 123 456六、輸出The result of swap is num1 = 456 and num2 = 123The MaxCD of 456 and 123 is 3七、小結動態鏈接具有下列優點: 1、節省內存和減少交換操作。很多進程可以同時使用一個 DLL,在內存中共享該 DLL 的一個副本。相反,對於每個用靜態鏈接庫生成的應用程序,Windows 必須在內存中載入庫代碼的一個副本。 2、節省磁碟空間。許多應用程序可在磁碟上共享 DLL 的一個副本。相反,每個用靜態鏈接庫生成的應用程序均具有作為單獨的副本鏈接到其可執行圖像中的庫代碼。 3、升級到 DLL 更為容易。DLL 中的函數更改時,只要函數的參數和返回值沒有更改,就不需重新編譯或重新鏈接使用它們的應用程序。相反,靜態鏈接的對象代碼要求在函數更改時重新鏈接應用程序。 4、提供售後支持。例如,可修改顯示器驅動程序 DLL 以支持當初交付應用程序時不可用的顯示器。 5、支持多語言程序。只要程序遵循函數的調用約定,用不同編程語言編寫的程序就可以調用相同的 DLL 函數。程序與 DLL 函數在下列方面必須是兼容的:函數期望其參數被推送到堆棧上的順序,是函數還是應用程序負責清理堆棧,以及寄存器中是否傳遞了任何參數。 6、提供了擴展 MFC 庫類的機制。可以從現有 MFC 類派生類,並將它們放到 MFC 擴展 DLL 中供 MFC 應用程序使用。 7、使國際版本的創建輕松完成。通過將資源放到 DLL 中,創建應用程序的國際版本變得容易得多。可將用於應用程序的每個語言版本的字元串放到單獨的 DLL 資源文件中,並使不同的語言版本載入合適的資源。 使用DLL 的一個潛在缺點是應用程序不是獨立的;它取決於是否存在單獨的 DLL 模塊
3. C++自定義函數原型申明的疑問
在vc中,定義了一個模板函數:
template<class _Ty> inline void swap(_Ty& _X, _Ty& _Y)
{
_Ty _Tmp = _X;
_X = _Y, _Y = _Tmp;
}
該函數在..\VC98\Include\XUTILITY.h中定義。該頭文件在#include "stdafx.h" 中被自動包含了。
所以實際上編譯鏈接的是這個函數,而不是自己寫的swap了。
把橘神swap改名為myswap,就清楚了。
而且進行原型聲明後,反而是連接簡鍵自己編寫的函數攔伍巧了。可以試試看。
4. 如何設置/修改centos上的swap交換分區
根據Redhat公司的建議,linux系統swap分區最適合的大小是物理內存的1-2倍.不過Linux上有些軟體對swap分區得需求較大,例如要順利執行Oracle資料庫軟體,swap分區至少需要400MB或者物理內存2倍以上的空間.當然我們在安裝Linux的時候,就能直接講swap分區設置到足夠的大小,但如果已經安裝好Linux了,之後又想再安裝類似Oracle的軟體,卻發現swap分區空間不夠,該如何處理?
針對此種情況,有兩種解決方法:一是創建新的swap分區;另一則是創建swap文件.
(這里暫時對創建swap文件做說明)
創建swap文件
如果你的硬碟空間已經全部分配給其他分區,也沒有多餘的預算新添購硬碟,我們可以利用swap文件的方式增加虛擬的swap空間,不過執行性能會較實際的swap分區差.
產生swap文件
要創建swap文件,執行dd命令,新增一個256MB的swap文件:
# dd if=/dev/zero of=/tmp/myswap bs=32k count=8192
(bs=32k指定每個扇區佔用32kb,讀入了8192 0個區段,輸出了8192 0個區段)
注意:bs參數的目的在於指定每櫻中次讀取及輸入多少個bytes;由於磁碟存取的最小單位為扇區,因此設置bs也等於設置每個扇區的大小;而count的目的則在指定可以使用多少個扇區.因此,可以使用的硬碟空間就等於bs*count.以上範例為例,可以使用的硬碟空間等於32*8192=262144(KB),亦等於256MB.
執行上述命令後,會在/tmp目錄中創建一個256MB的myswap文件
格式華及啟動swap文件
接下來執行mkswap命令,將myswap文件格式化成s文件系統,系統才能使用,切換到咐頌吵/tmp目錄,並執行以下命令:
# mkswap myswap (#將文件格式化為swap文件格式)
setting up swapspace version 1 , size = 262144 KB
# swapon /tmp/myswap (#啟動swap分區)
要停止使用新創建的swap文件,只要執行 swapoff /tmp/myswap命令即可.
開機時自動啟動新添加的swap分區
如果每次開機後都要執行swapon命令啟動swap分區或者文件,這太麻煩了.這時可以利用文字編輯器在/etc/fstab文件加一衡侍行,好讓開機時自動啟動swap分區及文件:
/dec/hdb5 swap swap defaults 0 0 (開機時啟動此swap分區)
/tmp/myswap swap swap defaults 0 0 (開機時啟動此swap文件)
5. 如何設置/修改centos上的swap交換分區
根據Redhat公司的建議,Linux系統swap分區最適合的大小是物理內存的1-2倍.不過Linux上有些軟體對swap分區得需求較大,例如要順利執行Oracle資料庫軟體,swap分區至少需要400MB或者物理內存2倍以上的空間.當然我們在安裝Linux的時候,就能直接講swap分區設置到足夠的大小,但如果已經安裝好Linux了,之後又想再安裝類似Oracle的軟體,卻則羨發現swap分區空間不夠,該如何處理?
(bs=32k指定每個扇區佔用32kb,讀孫敏拍入了8192 0個區段,輸出了8192 0個區段) 注意:bs參數的目的在於指定每次讀取及拿散輸入多少個bytes;由於磁碟存取的最小單位為扇區,因此設置bs也等於設置每個扇區的大小;而count的目的則在指定可以使用多少個扇區.因此,可以使用的硬碟空間就等於bs*count.以上範例為例,可以使用的硬碟空間等於32*8192=262144(KB),亦等於256MB. 執行上述命令後,會在/tmp目錄中創建一個256MB的myswap文件 格式華及啟動swap文件
6. 如何設置/修改centos上的swap交換分區 .
小swap分區的方法:
1、先「df -h」和「fdisk - l」命令查看一下當前分區情況
/dev/mapper/vg_"hostname"-lv_swap就是swap分區,為2G。swap分區亦可用free命令查看到。
2、用swapoff命令關閉交換分區:
# swapoff /dev/mapper/vg_"hostname"-lv_swap
然後用free命令檢查下swap是否變為0了。
3、用lvrece命令把swap分區減小1500M:
# lvrece -L -1500M /dev/mapper/vg_"hostname"-lv_swap
輸入y,確定,看到提示swap減小至516M。
4、重新把/dev/mapper/vg_"hostname"-lv_swap設置為swap分區:
# mkswap /dev/mapper/vg_"hostname"-lv_swap
5、swapon開啟swap分區:
# swapon /dev/mapper/vg_"hostname"-lv_swap
然後用free命令檢查下swap是否變為516M了。
7. c語言中的幾道難題
/*給定程序的功能是找出所有100以內(含
100)滿足I,I+4,I+10都是素數的整數I(I+10
也在100以孫飢內)的個數cnt以雹碼及這些I之和sum。*/
#include<stdio.h>
main()
{
int i,j,cnt=0;
long sum=0;
for(i=1;i<=90;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
if((i+4)%j==0)
break;
if((i+10)%j==0)
break;
}
if(j>=i)
{
cnt++;
sum+=i;
}
}
printf("滿足條件的數有%d個,它們的和為%ld",cnt,sum);
}
/*給定程序MODI1.C中函數fun的功能是:將a
所指字元串中字元的倒序,和b所
指字元串中的倒序,按排列的順序交叉合並
到c所指數組中,過長的剩餘字元接在
c所指數組的尾部。 例如,當a所指字元串中
的內容為"abcdefg", b所指字元串
中的內容為"1234"時,則c所指數組中的內容
應該為"g4f3e2d1cba";而當a所指字
符串中的內容為"1234",b所指字元串中的內
容為"abcdefg"時,則肆返則c所指數組中的
內容應該為"4g3f2e1dcba"。
請改正函數fun中的錯誤,使它能得出正
確的結果。
注意:不要改動main函數,不得增行或刪
行,也不得更改程序的結構! */
/*#include <stdio.h>
#include <string.h>
#include <conio.h>
void myswap(char *s)
{
char *sp,*st,ch;
sp=s;
st=s+strlen(s)-1;
while(sp<=st)
{
ch=*sp;
*sp=*st;
*st=ch;
sp++;
st--;
}
}
void fun(char *a,char *b,char *c)
{
char s1[100],s2[100],*sa,*sb;
/************FOUND************/
strcpy(s1,a);
strcpy(s2,b);
/************FOUND************/
/*myswap(s1);myswap(s2);
sa=s1;
sb=s2 ;
while(*sa||*sb)
{
if(*sa)
{
*c=*sa;
c++;
sa++;
}
if(*sb)
{
*c=*sb;
c++;
sb--;
}
}
*c=0;
}
main()
{
char s1[100],s2[100],t[200];
printf("\nEnter s1 string:");
scanf("%s",s1);
printf("\nEnter s2 string:");
scanf("%s",s2);
fun(s1,s2,t);
printf("\nThe result is:%s\n",t);
} */
8. dev c++如何編譯多個源文件
//file1: a.cpp
#include<iostream>
template<typename a>
void myswap(a & x,a & y)
{
a t;
t=x; x=y; y=t;
}
/咐頃燃/乎嫌file2: main.cpp
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>衡虛a,b;
myswap(a,b);
cout<<a<<" "<<b;
system("PAUSE");
return 0;
}
9. LINUX操作系統如何調整SWAP大小
很多新用戶在使用LINUX 操作系統 的時候都不會調整SWAP大小.我就針對這個問題給大家推薦一個解決 方法 .
LINUX操作系統如何調整SWAP大小
使用free命令帶上m參數,查看swap文件大小,官方建議在RAM是2到4.5G時,swap是RAM的2倍;如果RAM大於等於4G則swap等於RAM即可
也可用cat 查看etc目錄下的swaps文件,如下圖
創建一個swap文件
########
dd if=/dev/zero of=/tmp/swap bs=1MB count=1024
########
以下僅供參考:不用看
Creating a swap file
First of, make sure the file system the disk you wish to swap on is properly mounted. For the purposes of this tutorial we will assume the disk is mounted as /mnt and we want to use the file /mnt/myswap.swp for swapping.
使用下面的命令創建一個1G的swap文件
Use the following command to create a 1024MB file that we will use for swapping
########
dd if=/dev/zero of=/mnt/myswap.swp bs=1024MB count=1
########
製作一個swap文件,如果覺得繁瑣,可以將mkswap文件掛載到tmp目錄下,例如:
########
mkswap /tmp/swap
########
以下僅供參考:不用看
Preparing the swap file
Before we enable the swap file we must first set it up. The following command accomplishes just that:
########
mkswap /mnt/myswap.swp
########
使用swapon 啟動/tmp/swap
########
swapon /tmp/swap
########
使用一個swap分區,如果已經有一個swap分區,該步驟可以省略
以下僅供參考:不用看
Using a swap partition
Setting up a swap partition is a bit more difficult, as the partition must be first created then formatted using the linux-swap file system. Once that is done, assuming the swap partition is at/dev/scsi/host0/bus0/target0/lun0/part5 (common for v24 USB drives with mutiple partitions), the only command that needs be issued is:
再次使用free查看增加後的swap大小
如果只想增加swap大小,請忽略以下的操作(重要!!)
如果不使用剛才增加的1G的swap文件,使用下面的swapoff命令,可以關閉,這樣swap文件就縮小了1G
使用swapoff關閉swap文件
########
swapoff /tmp/swap
########