託管模組的定義:託管模組是乙個需要clr才能夠執行的標準windows可移植可執行檔案。(portalbe executable 簡稱pe)。
託管模組的生成過程:使用clr支援的程式語言,編寫源**檔案。然後使用該語言的編譯器進行語法分析和語義分析,然後生成託管**。
託管模組的結構:
1.pe表頭的資訊:
乙個字段指出了檔案的型別: gui,cui或者 dll。(這裡的dll特指.net中程式集檔案的乙個形式。)
乙個表示時間標記的字段:表示檔案建立的時間。
其他資訊在當託管模組中只包含il**時,將會被忽略。
當模組中包含本地cpu**時,表頭還會有關於本地cpu**的一些資訊。
2.clr表頭 :
託管模組所需要的clr版本號
一些標記
託管模組入口點方法的methoddef元資料標記
關於託管模組的元資料、資源、強命名、標記和其他一些資訊的位置和尺寸
3.元資料:
元資料**的集合。
元資料**分為兩種:一種用於描述源**中定義的型別和成員;一種用於描述源**中引用的型別和 成員。
元數**還有一中清單表。
4.中間語言**:
編譯器在編譯源**時產生的指令。clr在執行會將il**編譯成本地cpu指令。
C 託管模組與程式集
當寫好了c 的源 後,c 編譯器會把源 編譯成乙個託管模組而非最終的機器語言。這個涉及到clr的相關功能,因為clr就是為了將不同的語言編寫 例如c vb 出來的源 可以更好地在不同平台使用,而不是針對某一種架構cpu進行編譯。編譯器編譯出託管模組後,最終通過jit編譯器動態實時編譯託管模組中的il...
CTS,CLS,託管模組,程式集,IL
il可利用所有特性,其他為其子集 cts規範描述型別的定義和行為。cts規定乙個型別可以包含 0個或多個成員。字段,方法,屬性,事件 還定義了型別可見性和訪問型別成員的一些規則 private family assembly等 cts建立了以程式集為型別可見性邊界的規則,而 clr實現了這種可見性規...
c 託管非託管Dll動態呼叫
最近經常看到有人問託管非託管dll呼叫的問題。對於動態庫的呼叫其實很簡單。網上很多 都實現了dll的靜態呼叫方法。我主要談論下動態庫的動態載入。對於託管動態庫,實現動態載入很簡單。files dwwwing dlldemo.rar code assembly.loadfile filepath 這裡...