與非託管**的互操作
clr 提供3種與非託管**的互動方案:
■ 託管**通過使用 p/invoke 機制 來呼叫dll檔案中的非託管函式
許多 fcl 中定義的型別內部都有呼叫到 kernel32.dll, user32.dll 等等檔案中的函式。同時許多程式語言會提供託管**呼叫非託管**的簡便途徑,比如 c# 程式能夠直接呼叫 從kernel32.dll 匯出的 createsemaphore 函式。
■ 託管**可使用已存在的 com 元件(伺服器)
為這些com 元件生成乙個託管程式集(它提供了該com 元件的詳細描述),其他的託管程式就能通過使用該生成的託管程式集進行互操作。詳細請參考.net framework sdk 中的 tlbimp.exe 工具。 如果碰巧手頭沒有該工具,或者你想對 tlbimp.exe 生成的**有更多自定義,你可以手工建立實現互操作功能的源**。例如:你能在 c# 程式中使用 directx com 元件。
■ 非託管**可使用託管型別 (伺服器)
為託管**生成乙個 com 元件是最簡單的方法。請參考.net framework sdk 中的 tlbexp.exe 和 regasm.exe工具。
隨著 windows 8 的發布,microsoft 匯入了新的 windows api: windows runtime (winrt)。這個 api 內部也是通過 com 元件來實現,但是由於使用了ecma 標準metadata來描述這些com 元件,幾乎所有winrt api 都能被託管**直接使用。
CLR via C 讀書筆記2 2
把型別編譯成乙個模組 先假設有這麼乙個簡單的程式 public sealed class program 該程式定義乙個名為 program 的型別,它擁有乙個公有靜態 public,static 方法 main,該方法參照 system.console。把源 存為 program.cs 執行以下命...
CLR via C 讀書筆記目錄
一口氣寫了clr via c 兩章的筆記,有些內容自己也似懂非懂,有些則覺得很好很強大,所以趁此機會作個目錄同時為每篇文章打個評分 clr via c 讀書筆記1 1 託管模組 managed modules 定義 clr via c 讀書筆記1 2 程式集 assemblies 定義 clr vi...
《CLR via C 》讀書筆記 09 引數
如果提取的乙個方法,目的是 傳入乙個值,然後加工計算後返回 這是乙個常見的行為 傳入的值如果是 值型別 那是建立的副本,因為所以需要返回的時候再次賦值 使用 out 修飾形參,這樣傳入的是該值的位址,避免建立副本,返回 開發中,會遇到給乙個方法傳的引數大於7個,雖然這樣寫的次數少,但我幹過 引數多,...