除了
c#編譯器
, 你可以想用程式集鏈結器工具
al.exe
來建立程式集
. 如果你想建立乙個包含著不同編譯器構建的模組的程式集
(如果你的編譯器不支援相應的
c#/addmodule
開關),
或者你不知道你的程式集打包要求
, 這個程式集鏈結器是很有用的
. 你可以使用
al.exe
來構建只包含資源的程式集
, 成為附屬
(satellite)
程式集,
它主要是用於本地化的目的
. 我將在本章的後面講述附屬程式集.
al.exe
工具可以產生只包含著乙個
manifest
的exe
或者dll pe
檔案, manifest
描述了在其它模組中的型別
. 為了理解
al.exe
如何工作
, 讓我們改變
jefftype.dll
程式集構建的方式:
csc /t:module rut.cs
csc /t:module fut.cs
al /out:jefftypes.dll /t:library fut.netmodule rut.netmodule 圖
2-3顯示了執行這些命令產生的檔案.
圖2-3
多檔案程式集包含了三個託管模組
, 其中乙個包含著
manifest
在這個例子中
, 建立了兩個單獨的模組
, rut.netmodule
和fut.netmodule,
這兩個模組都不是程式集
, 因它們都不包含
manifest metadata表.
然後產生了第三個檔案
: jefftypes.dll,
它是乙個
dll pe檔案(
因為/t[arget]:library開關
), 這個檔案不包含
il**
, 但是有
manifest metadata表,
表示rut.netmodule
和fut. netmodule
是程式集的一部分
. 產生的程式集包含三個檔案
: jefftypes.dll, rut.netmodule
和fut. netmodule.
程式集鏈結器沒有辦法把多個檔案合併到乙個檔案中.
at.exe
工具通過使用/t[arget]:exe或者/t[arget]:winexe命令列開關
, 也能產生
cui和
gui pe
檔案,
但是這個方法不是很常見
, 因為它意味著
exe pe
檔案包含足夠的
il**
, 但是需要呼叫另外乙個模組中的函式
. 在呼叫
al.exe時,
通過指定/main命令列開關
, 可以指定使用哪個模組中的函式來作為入口
. 下面是乙個如何呼叫程式集鏈結器的例子:
第一行命令把
構建到乙個模組中
, 第二行產生乙個
檔案,
其包含著
manifest metadata表,
此外由於
命令列開關的作用
, al.exe
產生了乙個全域性函式__entrypoint.
這個__entrypoint函式包含著如下的
il**:
.method privatescope static void __entrypoint$pst06000001() cil managed
// end of method 'global functions'::__entrypoint
正如你所看到的
, 這個**只是簡單地呼叫了包含在
program
型別中的
main
函式, program
型別定義在
檔案中.
在al.exe
中的/main
開關不是很有用
, 因為不太可能你建立了乙個程式集
,但是在
pe檔案中卻不包含入口
. 我在這裡提到它只是讓你知道它的存在.
MySQL聯結器原理 mysql 聯結器
mysql 的聯結器是msyql server層的第乙個模組。當我們用mysql 客戶端來連線mysql伺服器的時候,處理這個連線請求的就是聯結器模組。mysql客戶端和伺服器端的連線使用的是tcp協議,在完成tcp握手之後,聯結器開始進行身份認證。如果使用者名稱或密碼不對,那麼聯結器會丟擲乙個 a...
如何區別FFC聯結器和FPC聯結器
接器領域中,ffc聯結器和fpc聯結器常常讓人混淆。雖然兩者都是柔性電纜聯結器,但是ffc聯結器以及fpc聯結器還是有一定程度上的區別。柔性扁平電纜 flexible flat cable 聯結器,fpc是柔性印製線路 flexible print circuit 兩者的製造上來講,他們線路形成的方...
聯結器的作用
聯結器又稱接外掛程式,主要是在電子產品 電力裝置中提供方便的電氣插拔式連線,廣泛地應用於電子裝置當中,使得電子產品的生產 維修效率得以極大提高。由於大量採用插拔式連線,其連線的可靠性 接觸點電阻的大小對於產品的質量來說就越來越重要,因此必須對所採用的聯結器的效能進行全面的了解,以便合理正確地使用聯結...